我正在阅读一个包含数千个非英语字符串的文件,其中许多是东亚人,使用fgets
,然后调用MultiByteToWideChar
将它们转换回 Unicode:
WCHAR wstr[BUFSIZ] = { '\0' };
int result = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, src, -1, wstr, BUFSIZ);
这种方法几乎在所有情况下都可以正常工作。它不起作用的两个字符串是:
我爱你 (read in by fgets as "我爱ä½")
コム (read in by fgets as "コãƒ")
在这两种情况下,调用MultiByteToWideChar
返回零,最后一个字符wstr
是垃圾:
我爱� (final character xE4xBD)
コ� (final character xE3x83)
是否有一些环境设置或读取我的文本文件的替代方式可以消除这个问题?