C++ gbk与utf8互转

2023-11-11

本文代码已在vs2017上验证。gbk转utf8容易出现中文乱码,有的时候在x86 32位编译环境下中文显示正常,但切换到x64 64位编译环境下会乱码。本文所示的代码在32位和64位编译环境下均不会出现乱码。使用例子见:C++ 调用python

#include <iostream>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <windows.h>

using namespace std;

string GBK_2_UTF8(string gbkStr)
{
	string outUtf8 = "";
	int n = MultiByteToWideChar(CP_ACP, 0, gbkStr.c_str(), -1, NULL, 0);
	WCHAR *str1 = new WCHAR[n];
	MultiByteToWideChar(CP_ACP, 0, gbkStr.c_str(), -1, str1, n);
	n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
	char *str2 = new char[n];
	WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);
	outUtf8 = str2;
	delete[]str1;
	str1 = NULL;
	delete[]str2;
	str2 = NULL;
	return outUtf8;
}

string UTF8_2_GBK(string utf8Str)
{
	string outGBK = "";
	int n = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, NULL, 0);
	WCHAR *str1 = new WCHAR[n];
	MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, str1, n);
	n = WideCharToMultiByte(CP_ACP, 0, str1, -1, NULL, 0, NULL, NULL);
	char *str2 = new char[n];
	WideCharToMultiByte(CP_ACP, 0, str1, -1, str2, n, NULL, NULL);
	outGBK = str2;
	delete[] str1;
	str1 = NULL;
	delete[] str2;
	str2 = NULL;
	return outGBK;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ gbk与utf8互转 的相关文章

随机推荐

  • 【查看linux中所有用户的三种方式】

    查看linux中所有用户的三种方式学习目标 提示 通过使用 etc passwd 文件 getent 命令 compgen 命令这三种方法查看系统中用户的信息 用户信息存放位置 提示 Linux 系统中用户信息存放在 etc passwd
  • shiro权限管理

    shiro ssm maven实现的权限管理 里面包含数据库文件 演示地址 登录 后台管理 包含角色管理 管理员可以对每个角色进行菜单分配 菜单管理 可以添加菜单 有子父级 用户管理 操作日志 系统日志 系统监控 在此基础上二次开发简直完美
  • 当系统中登录用户的角色和权限改变时的处理方法

    一 当登陆在线的用户的角色的权限改变时处理 1 登陆时将用户的所有权限放入session之中 2 在filter中加入判断信息 动态去数据库查询当前用户的权限和session中的权限的集合大小进行比较 不一致 移除session中的旧权限
  • [AHK]新浪实时股票数据接口

    2022年1月 发现 新浪接口反馈 Kinsoku jikou desu 已有新的方法 如需获取实时股票价格 当前价格 涨停价 跌停价 等 请联系weixin sunwind1576157 AHK 腾讯实时股票数据接口 AHK 腾讯实时股票
  • GO语言常用标准库 fmt

    GO语言常用标准库 fmt 1 fmt fmt包实现了类似C语言printf和scanf的格式化I O 主要分为向外输出内容和获取输入内容两大部分 1 1 1 向外输出 标准库fmt提供了以下几种输出相关函数 Print Print系列函数
  • 1024Byte(字节)=1KB

    二进制数系统中 每个0或1就是一个位 bit 位是数据存储的最小单位 计算机中的CPU位数指的是CPU一次能处理的最大位数 例如32位计算机的CPU一次最多能处理32位数据 字节 Byte 是通过网络传输信息 或在硬盘或内存中存储信息 的单
  • 【转】本地jar 上传到maven仓库

    Maven环境准备 下载maven安装包 解压后配置好path环境变量 具体配置请参考百度 注意一般maven仓库有两个目录可以上传 maven snapshots 和 maven releases 一般快照 也就是jar的后缀名为snap
  • Python:安装paddlepaddle后运行代码报错ImportError: core_avx.so: undefined symbol: _dl_sym, version GLIBC_PRIVA

    是paddlepaddle版本导致的 出现问题时我安装的版本是 python m pip install paddlepaddle 2 3 1 i https pypi tuna tsinghua edu cn simple 改成下面这个版
  • Spring(做项目常用的网址)

    目录 1 后端maven中央仓库 2 jquery官网下载 3 mybatis文档中文版 4 mybatis英文文档 5 mybatis生成逆向工程代码及网址 6 Spring网址 附注常用到的代码 7 使用 Controller注解为什么
  • 【数据库原理复习题】

    文章目录 一 单选题 二 填空题 三 判断题 四 简答题 五 综合题 5 1 属性集合的闭包计算 5 2 确定候选码并进行范式级别的判断 5 2 1 确定候选码讲解 5 2 2 范式级别的判断讲解 5 3 根据要求写SQL语句 5 3 1数
  • canvas绘制小树阴影-transform

    绘制小路 可用quadraticCurveTo 二次贝塞尔曲线 来绘制复杂曲线 也可以用bezierCurveTo 三次贝塞尔曲线 效果图 代码如下 demo html
  • 深度学习环境配置8——(30系显卡)windows下的torch==1.7.1环境配置

    深度学习环境配置8 30系显卡 windows下的torch 1 7 1环境配置 注意事项 一 2021 10 8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一 Anaconda安装 1 Anaconda的下载 2
  • 计算机毕业设计Node.js+Vue会议管理系统(程序+源码+LW+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 Node js Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 Express框架 No
  • java socket tcp 长连接_java socket长连接

    package com paic umap tcp import java io IOException import java io InputStream import java io ObjectInputStream import
  • LeetCode 182. Duplicate Emails

    SQL Schema Write a SQL query to find all duplicate emails in a table named Person Id Email 1 a b com 2 c d com 3 a b com
  • Ubuntu 下配置protobuf

    首先得到 protobuf 相应的包文件 在终端上输入如下 wget http protobuf googlecode com files protobuf 2 5 0 tar gz 由于 现在 protobuf 2 5 0 tar gz已
  • Python Serial串口的简单数据收发

    导入模块 注意这里模块名是pyserial pip install pyserial 1 打开串口 import serial com serial Serial COM3 9600 print com 2 发送数据 import seri
  • unityhub登录不上,登录界面刷新不出来

    如果是登录界面白屏的话可以尝试 1 关闭hub 右下角也要退出 找不到的可以直接任务管理器退出 2 删除 UserProfile AppData Roaming 里面的 UnityHub Cache和 Unity Caches 文件夹 3
  • javascript的null、undefined和布尔数据类型

    javascript中 有null undefined 在使用typeof 时候 console log typeof null object console log typeof undefined undefined null与unde
  • C++ gbk与utf8互转

    本文代码已在vs2017上验证 gbk转utf8容易出现中文乱码 有的时候在x86 32位编译环境下中文显示正常 但切换到x64 64位编译环境下会乱码 本文所示的代码在32位和64位编译环境下均不会出现乱码 使用例子见 C 调用pytho