C++UTF8互转ANSI

来源:互联网 发布:西方国家为什么不淘宝 编辑:程序博客网 时间:2024/05/21 17:14
//UTF8转ANSIvoid UTF8toANSI(CString &strUTF8){//获取转换为多字节后需要的缓冲区大小,创建多字节缓冲区UINT nLen = MultiByteToWideChar(CP_UTF8,NULL,strUTF8,-1,NULL,NULL);WCHAR *wszBuffer = new WCHAR[nLen+1];nLen = MultiByteToWideChar(CP_UTF8,NULL,strUTF8,-1,wszBuffer,nLen);wszBuffer[nLen] = 0;nLen = WideCharToMultiByte(936,NULL,wszBuffer,-1,NULL,NULL,NULL,NULL);CHAR *szBuffer = new CHAR[nLen+1];nLen = WideCharToMultiByte(936,NULL,wszBuffer,-1,szBuffer,nLen,NULL,NULL);szBuffer[nLen] = 0;strUTF8 = szBuffer;//清理内存delete []szBuffer;delete []wszBuffer;}
//ANSI转UTF8void ANSItoUTF8(CString &strAnsi){//获取转换为宽字节后需要的缓冲区大小,创建宽字节缓冲区,936为简体中文GB2312代码页UINT nLen = MultiByteToWideChar(936,NULL,strAnsi,-1,NULL,NULL);WCHAR *wszBuffer = new WCHAR[nLen+1];nLen = MultiByteToWideChar(936,NULL,strAnsi,-1,wszBuffer,nLen);wszBuffer[nLen] = 0;//获取转为UTF8多字节后需要的缓冲区大小,创建多字节缓冲区nLen = WideCharToMultiByte(CP_UTF8,NULL,wszBuffer,-1,NULL,NULL,NULL,NULL);CHAR *szBuffer = new CHAR[nLen+1];nLen = WideCharToMultiByte(CP_UTF8,NULL,wszBuffer,-1,szBuffer,nLen,NULL,NULL);szBuffer[nLen] = 0;strAnsi = szBuffer;//内存清理delete []wszBuffer;delete []szBuffer;}


0 0
原创粉丝点击