博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GBK转utf-8,宽字符转窄字符
阅读量:5856 次
发布时间:2019-06-19

本文共 2199 字,大约阅读时间需要 7 分钟。

 
//GBK转UTF8string CAppString::GBKToUTF8(const string & strGBK)  {    string strOutUTF8 = "";    WCHAR * str1;    int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);    str1 = new WCHAR[n];    MultiByteToWideChar(CP_ACP, 0, strGBK.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);    strOutUTF8 = str2;    delete []str1;    str1 = NULL;    delete []str2;    str2 = NULL;    return strOutUTF8;}//UTF8转GBKstring CAppString::UTF8ToGBK(const std::string & strUTF8)  {      int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);      unsigned short * wszGBK = new unsigned short[len + 1];      memset(wszGBK, 0, len * 2 + 2);      MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)strUTF8.c_str(), -1, (LPWSTR)wszGBK, len);      len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL);      char *szGBK = new char[len + 1];      memset(szGBK, 0, len + 1);      WideCharToMultiByte(CP_ACP,0, (LPWSTR)wszGBK, -1, szGBK, len, NULL, NULL);      //strUTF8 = szGBK;      std::string strTemp(szGBK);      delete[]szGBK;      delete[]wszGBK;      return strTemp;  }//宽字符转窄string CAppString::Unicode2ACSII(const wstring & strSource){    string strDest("");    if (strSource.empty())    {        return strDest;    }    int nlen = ::WideCharToMultiByte(CP_ACP, 0, strSource.c_str(), -1, NULL, 0, NULL, NULL);    char * szDest = new char[nlen + 1];    ::WideCharToMultiByte(CP_ACP, 0, strSource.c_str(), -1, szDest, nlen, NULL, NULL);    strDest = szDest;    delete szDest;    szDest = NULL;    return strDest;}//窄字符转宽字符wstring CAppString::ASCII2Unicode(const char* strSrc){	wchar_t*  pElementText = NULL;	int  nTextLen = 0;	// multi char to wide char	nTextLen = MultiByteToWideChar( CP_ACP,	0, strSrc, -1, NULL, 0 );	pElementText = new wchar_t[nTextLen + 1];	memset(( void* )pElementText, 0, sizeof( wchar_t ) * ( nTextLen + 1 ) );	::MultiByteToWideChar(CP_ACP, 0, strSrc, -1, pElementText, nTextLen);	wstring sText;	sText = pElementText;	delete[] pElementText;	return sText;}

转载于:https://www.cnblogs.com/yuzhould/p/4454255.html

你可能感兴趣的文章
[转载] Discovery——看穿读心术 02 恋人心理透视
查看>>
php纯面向过程--论坛
查看>>
CF 715 E. Complete the Permutations
查看>>
jQuery源码分析 开篇(一)
查看>>
dotnet 各个版本的下载链接----Download .NET SDKs for Visual Studio
查看>>
获取shell脚本目录
查看>>
linux命令--bash进阶
查看>>
C. Tanya and Toys_模拟
查看>>
NEUACM1132: Renew MST Quickly 增量最小生成树
查看>>
4.结对编程汇编
查看>>
闭包面试提 (2)
查看>>
php-字符串函数
查看>>
ftruncate(改变文件大小)
查看>>
多点触摸与单点触摸接口主要区别【转】
查看>>
LeetCode OJ:Combination Sum II (组合之和 II)
查看>>
简述Dubbo
查看>>
(转)三分钟玩转jQuery.noConflict()
查看>>
python基础学习笔记第一天
查看>>
C/S和B/S 《JavaWeb开发王者归来》学习笔记
查看>>
图像分类丨浅析轻量级网络「SqueezeNet、MobileNet、ShuffleNet」
查看>>