MultiByteToWideChar 无法将这个韩文文本(引用打印)“2013-03-22 =0E?@HD=0F 05:30”正确转换为 Unicode。此处引用可打印的形式只是为了将这段文字放在这里,实际内容包含0xE和0xF字节。
MultiByteToWideChar(50225, 0, bs.pData, bs.nSize, pData + nSize, nConvertedLen);
=0E?@HD=0F 按原样转换,生成的 Unicode 包含 0xE 和 0xF ASCII 字符。但是,我发现那里应该出现几个韩文字符而不是这些字符。我一直认为国际字符序列以代码大于 127 的字节开头,但最近发现它不是真的。但是, MultiByteToWideChar 仍然认为我的方式并拒绝对待 0xE ?@ HD 0xF 作为 50225(或 949)代码页的几个非 ASCII 韩语字符。当我使用 .NET 函数(如 Encoding.GetEncoding(50255).GetString)在同一台计算机上执行相同操作时,我得到正确的转换结果并且韩语字符在那里。但是 MultiByteToWideChar 不起作用。我尝试了可以为 MultiByteToWideChar(MB_COMPOSITE 等)设置的不同标志,但仍然没有运气。
如何让 MultiByteToWideChar 正常工作?如果重要的话,我在 WinXP SP3 上。同样,.NET 方式运行良好,并且在内部 Encoding.GetString 似乎调用了 MultiByteToWideChar。