我有一些输入日语字符串和一个字符缓冲区,如下所示
TCHAR szvalue[256] = _T("はい");
char aszvalue[256];
当我执行以下调用时,我的垃圾值就像縺ッ縺
WideCharToMultiByte(UTF-8, 0, szvalue, -1, szMBBuffer, 7, NULL, NULL);
还有一件事,如果我将代码页设置为932它工作正常,但不是UTF-8。
答案 0 :(得分:0)
有同样的问题。它的原因是LPWSTR或(TCHAR)不是NULL终止的。函数调用中的第三个参数( -1 )表示变量 szvalue 以空值终止的函数。而是将字符串的长度传递为
WideCharToMultiByte(UTF-8, 0, szvalue, wcslen(szvalue), szMBBuffer, 7, NULL, NULL);