使用API​​ WideChartoMultibyte将日语字符从宽字符转换为多字节给出'????'

Rah*_*hul 2 c++ windows unicode mfc widechar

在我的MFC应用程序中,我正在从字符串表中读取日语字符,然后使用以下代码将其转换为多字节

WCHAR wBuf[1024];
int rc;

rc = LoadStringW(hInstance, iResourceID, wBuf, 1024);

WideCharToMultiByte(1252, WC_COMPOSITECHECK, wBuf, -1, buf, 1024, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

但每个日文字符都被转换成'????' 我试图将代码页从1252更改为1200但没有帮助.

Mic*_*sen 5

Windows-1258是越南文本的代码页.日语不能在越南语代码页中表示,因此输出映射到问号.同样适用于1252,它仅适用于西欧语言.

在1200的情况下,这不是一个真正的代码页:根据MSDN,它只适用于托管应用程序(即.NET).

我强烈建议直接使用Unicode,但如果你绝对必须将它转换为多字节字符集,你需要一个支持日语的,在这种情况下,Shift-JIS,代码页932,是通常的代码页.