WideCharToMultiByte在vc ++应用程序的代码页utf-8中返回日语字符的垃圾字符

时间:2014-02-27 08:21:24

标签: visual-c++ utf-8

我有一些输入日语字符串和一个字符缓冲区,如下所示

TCHAR szvalue[256] = _T("はい");

char  aszvalue[256];

当我执行以下调用时,我的垃圾值就像縺ッ縺

WideCharToMultiByte(UTF-8, 0, szvalue, -1, szMBBuffer, 7, NULL, NULL);

还有一件事,如果我将代码页设置为932它工作正常,但不是UTF-8。

1 个答案:

答案 0 :(得分:0)

有同样的问题。它的原因是LPWSTR或(TCHAR)不是NULL终止的。函数调用中的第三个参数( -1 )表示变量 szvalue 以空值终止的函数。而是将字符串的长度传递为

WideCharToMultiByte(UTF-8, 0, szvalue, wcslen(szvalue), szMBBuffer, 7, NULL, NULL);