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