发生情况:一个全角的符号(感叹号,单引号之类的)后跟一个空格,例如
! ‘ ’ ! “ ” [ ] = - 0、 。 , ; : …… · (这里的所有引号请用全角)
这种情况下,MultiByteToWideChar 会输出一堆乱码出来
�?�?�?!�?�?�?�?= - 0 �?�?�?�?�?…�?% ·
这样的,请问有人知道怎么解决吗?
调用:
MultiByteToWideChar(CP_UTF8, 0, szUTF8, -1, pWcharTmp, nWcharCnt); //szUTF8 为 const char*的 UTF8 字面量
Unicode 的现象是
WideCharToMultiByte(CP_ACP, 0, szUCS2, -1, szGBK, nMB, NULL, NULL); //szGBK 是 char*,szUCS2 是 wchar_t*
处理上述的特殊字符串的时候,输出
拢隆 隆庐 隆炉 拢隆隆掳 隆卤 隆戮 隆驴 隆垄 隆拢 拢卢 拢禄 拢潞 隆颅隆颅 隆陇
1
sgissb1 2018-03-19 10:08:38 +08:00
字符集问题,还有存储方式的问题。
1,不是所有的全角符号都有一一对应的字符集转换。 2,检查你的代码,该用 wchar 的时候不要用 char。接口不要混淆使用。 |
2
zado 2018-03-19 10:48:00 +08:00
我也经常要用这两个函数,的确很容易搞混。下面不同的组合都试一下吧:
MultiByteToWideChar(CP_UTF8,...//UTF8->UNICODE MultiByteToWideChar(CP_ACP,...//GBK->UNICODE WideCharToMultiByte(CP_UTF8,...//UNICODE->UTF8 WideCharToMultiByte(CP_ACP,...//UNICODE->GBK |