C++ GB2312 和 utf8 在win32下 互转
string ANSItoUTF8(const char* strAnsi)
{
//获取转换为宽字节后需要的缓冲区大小,创建宽字节缓冲区,936为简体中文GB2312代码页
int nLen = MultiByteToWideChar(CP_ACP, NULL, strAnsi, -, NULL, NULL);
WCHAR *wszBuffer = new WCHAR[nLen + ];
nLen = MultiByteToWideChar(CP_ACP, NULL, strAnsi, -, wszBuffer, nLen);
wszBuffer[nLen] = ;
//获取转为UTF8多字节后需要的缓冲区大小,创建多字节缓冲区
nLen = WideCharToMultiByte(CP_UTF8, NULL, wszBuffer, -, NULL, NULL, NULL, NULL);
CHAR *szBuffer = new CHAR[nLen + ];
nLen = WideCharToMultiByte(CP_UTF8, NULL, wszBuffer, -, szBuffer, nLen, NULL, NULL);
szBuffer[nLen] = ; string s1 = szBuffer;
//内存清理
delete[]wszBuffer;
delete[]szBuffer;
return s1;
} string UTF8toANSI(const char* strUTF8)
{
//获取转换为多字节后需要的缓冲区大小,创建多字节缓冲区
int nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8, -, NULL, NULL);
WCHAR *wszBuffer = new WCHAR[nLen + ];
nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8, -, wszBuffer, nLen);
wszBuffer[nLen] = ; nLen = WideCharToMultiByte(, NULL, wszBuffer, -, NULL, NULL, NULL, NULL);
CHAR *szBuffer = new CHAR[nLen + ];
nLen = WideCharToMultiByte(, NULL, wszBuffer, -, szBuffer, nLen, NULL, NULL);
szBuffer[nLen] = ; string s1 = szBuffer;
//清理内存
delete[]szBuffer;
delete[]wszBuffer;
return s1;
}
转载
C++ GB2312 和 utf8 在win32下 互转的更多相关文章
- 转载:从程序员的角度看ASCII, GB2312, UNICODE, UTF-8
以下内容转自博客:http://blog.chinaunix.net/uid-22670933-id-1771613.html. 一.字符编码是怎么回事 0. 概念 字节是计算机的最基本存储单位,一个 ...
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...
- ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE
http://www.chinaz.com/web/2012/1119/282540.shtml 编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别, ...
- mysq查询语句包含中文以及中文乱码,字符集 GBK、GB2312、UTF8的区别
一.查看mysql 字符集设置情况 使用Navicat for Mysql查看工具,打开命令列界面,输入show variables like '%char%';如下图,查看当前mysql字符集设置情 ...
- 编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
转载:http://blog.jobbole.com/30526/(前面内容)和http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf ...
- cocos2d-x:读取指定文件夹下的文件名称+解决中文乱码(win32下有效)
援引:http://blog.csdn.net/zhanghefu/article/details/21284323 http://blog.csdn.net/cxf7394373/article/d ...
- 【miscellaneous】编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
转发:http://blog.jobbole.com/30526/ 来源:潜行者m 的博客 编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让 ...
- 编码的来源于格式简介ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE
编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来 ...
- C#获取文本文件的编码,自动区分GB2312和UTF8
C# 获取文本文件的编码,自动区分GB2312和UTF8 以下是获取文件编码的一个类 using System; using System.IO; using System.Text; /// < ...
随机推荐
- notepad++ 插件说明(一)
notepad++插件说明(一) 1.xml插件安装 下载地址:https://sourceforge.net/projects/npp-plugins/files/XML%20Tools/Xml%2 ...
- vs code的local history插件
使用vs code来编写前端代码,内存的使用比webstrom要少很多. vs code可以下载中文及debug插件,使用起来会方便很多. vs code不像idea或者webstrom有local ...
- CKeditor从Word粘贴格式问题
在config.js中添加配置 config.pasteFromWordRemoveFontStyles = false; config.pasteFromWordRemoveStyles = ...
- 在Linux中使用minikube
Minikebe Minikube是一个轻量级Kubernetes实现,它在本地机器上创建一个VM,并部署一个只包含一个节点的简单集群. Minikube使用Docker机器来管理Kubernetes ...
- jquery中this与$(this)的用法区别
jquery中this与$(this)的用法区别.先看以下代码: $("#textbox").hover( function() { this.title = "Test ...
- Asp.NetCore应用--部署到 ubuntu 进行托管
准备过程 netcore linux发布包(本人是通过vs2017发布) ubuntu 16.0.4虚机 进行托管 ubuntu netcore发布文件路径 服务器设置为将对 http://< ...
- linux6 下设置oracle自启动(单实例)
操作系统启动过程中,读取/etc/oratab文件,判断是否有哪些数据库是需要自动启动的(N代表不自动启动,Y代表自动启动) elan:/u01/app/oracle/product/10.2.0:Y ...
- Java小知识---Java请求一个URL。获取网站返回的数据
对url发送请求,获得返回值: public static String SendGET(String url,String param){ String result="";// ...
- 【转帖】GBase 数据库
产品介绍 分析型数据管理系统 GBase 8a GBase 8a能够实现大数据的全数据(结构化数据.半结构化数据和非结构化数据)存储管理和高效分析,为行业大数据应用提供完整的数据库解决方案.GBase ...
- python多线程学习(一)
python多线程.多进程 初探 原先刚学Java的时候,多线程也学了几天,后来一直没用到.然后接触python的多线程的时候,貌似看到一句"python多线程很鸡肋",于是乎直接 ...