gpt4 book ai didi

windows - MultiByteToWideChar 无法识别某些韩文字符

转载 作者:可可西里 更新时间:2023-11-01 10:07:06 40 4
gpt4 key购买 nike

此韩语文本(可打印引用)“2013-03-22 =0E?@HD=0F 05:30”无法通过 MultiByteToWideChar 正确转换为 Unicode。 Quoted-printable form here只是为了放置这段文字,实际内容包含0xE和0xF字节。

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。

最佳答案

这是一个 known issue .根本原因是 50225 中 SHIFT IN (0x0E) 和 SHIFT OUT (0x0F) 的使用不一致。它们未用作编码 shifts.

了解这些字节本身不是字符很重要。代码页 50225 不是普通的多字节编码,例如UTF-8。 UTF-8 是无状态的;相同的字节序列总是解码为相同的 Unicode。 50255 中字节序列的解码取决于之前消耗的字节,特别是 0x0E 和 0x0F。

给出的建议很有道理。使用任何理智的 Unicode 编码。 (就我个人而言,我建议使用 UTF-8)。

关于windows - MultiByteToWideChar 无法识别某些韩文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900985/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com