unicode编码转换教程

Unicode 转 UTF-8char* UnicodeToUtf8(const wchar_t* unicode){ int len; len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL); char *szUtf8 = (char*)malloc(len + 1); memset(szUtf8, 0, len + 1); WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL); return szUtf8;}int main(int argc, char *argv[]){ wchar_t* wCharUnicode = L"中国"; char* cCharUtf = UnicodeToUtf8(wCharUnicode); return 0;}UTF-8 转 UnicodeCString UTF82WCS(const char* szU8){ //预转换,得到所需空间的大小; int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0); //分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间 wchar_t* wszString = new wchar_t[wcsLen + 1]; //转换 ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen); //最后加上'\0' wszString[wcsLen] = '\0'; CString unicodeString(wszString); delete[] wszString; wszString = NULL; return unicodeString;}int main(int argc, char *argv[]){ wchar_t* wCharUnicode = L"中国"; char* cCharUtf = UnicodeToUtf8(wCharUnicode); CString strUnicode = UTF82WCS(cCharUtf); return 0;}测试效果:int length;wchar_t* wCharUnicode = L"中国你好";length = wcslen(wCharUnicode); // length = 4;char* cCharUtf = UnicodeToUtf8(wCharUnicode);length = strlen(cCharUtf); // length = 12;// 将UTF格式的char*转为CStringCString strUtf(cCharUtf);length = strUtf.GetLength(); // length = 6;CString strUnicode = UTF82WCS(cCharUtf);length = strUnicode.GetLength(); // length = 4;int length;wchar_t* wCharUnicode = L"中国,你好abc";length = wcslen(wCharUnicode); // length = 8;char* cCharUtf = UnicodeToUtf8(wCharUnicode);length = strlen(cCharUtf); // length = 16;// 将UTF格式的char*转为CStringCString strUtf(cCharUtf);length = strUtf.GetLength(); // length = 10;CString strUnicode = UTF82WCS(cCharUtf);length = strUnicode.GetLength(); // length = 8;int length;wchar_t* wCharUnicode = L"中国,你好abc";length = wcslen(wCharUnicode); // length = 8;char* cCharUtf = UnicodeToUtf8(wCharUnicode);length = strlen(cCharUtf); // length = 18;// 将UTF格式的char*转为CStringCString strUtf(cCharUtf);length = strUtf.GetLength(); // length = 10;CString strUnicode = UTF82WCS(cCharUtf);length = strUnicode.GetLength(); // length = 8;

本文地址:https://www.cknow.cn/archives/59883

以上内容源自互联网,由百科助手整理汇总,其目的在于收集传播生活技巧,行业技能,本网站不对其真实性、可靠性承担任何法律责任。特此声明!

如发现本站文章存在版权问题,烦请提供版权疑问、侵权链接、联系方式等信息发邮件至candieraddenipc92@gmail.com,我们将及时沟通与处理。