- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 IMultilanguage2::ConvertStringFromUnicode 从 UTF-16 进行转换。对于某些语言(日语、中文、韩语),我得到一个转义序列(例如代码页 50225(ISO-2022 韩语)的 0x1B、0x24、0x29、0x43
)。 WideCharToMultiByte 表现出相同的行为。
我正在构建一个 MIME 消息,因此编码在 header 本身中指定,转义前缀按原样显示。
有没有没有前缀的转换方法?
谢谢!
最佳答案
我真的看不出这里有什么问题。这是 ISO 2022 中的有效字节序列:
Escape sequences to designate character sets take the form ESC I [I...] F, where there are one or more intermediate I bytes from the range 0x20–0x2F, and a final F byte from the range 0x40–0x7F. (The range 0x30–0x3F is reserved for private-use F bytes.) The I bytes identify the type of character set and the working set it is to be designated to, while the F byte identifies the character set itself.
...
Code: ESC $ ) F
Hex: 1B 24 29 F
Abbr: G1DM4
Name: G1-designate multibyte 94-set F
Effect: selects a 94n-character set to be used for G1.
因为 F 是 0x43 (C),这个字节序列告诉解码器切换到 ISO-2022-KR:
Character encodings using ISO/IEC 2022 mechanism include:
...
ISO-2022-KR. An encoding for Korean.
ESC $ ) C to switch to KS X 1001-1992, previously named KS C 5601-1987 (2 bytes per character) [designated to G1]
在这种情况下,您必须指定 iso-2022-kr
作为 MIME Content-Type
或 RFC2047 中的字符集-编码的标题。但是 ISO 2022 解码器仍然必须能够在解码时动态切换字符集,因此数据包含到韩文字符集的初始切换序列是有效的。
Is there a way to convert without the prefix?
不适用于 IMultiLanguage2
和 WideCharToMultiByte()
,不。他们不知道您将如何使用他们的输出,因此为什么他们将初始切换序列包含到韩文字符集是有道理的 - 因此无法访问来自 MIME(或其他来源)的字符集信息的解码器仍然知道要使用什么字符集最初使用。
当您将数据放入 MIME 消息时,您必须在将 MIME 字符集设置为 iso-2022-kr
时手动去除字符集开关序列。如果您不想手动剥离它,则必须找到(或编写)不输出该初始开关序列的 Unicode 编码器。
关于winapi - IMultiLanguage2::ConvertStringFromUnicode - 如何避免复合前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30497206/
我正在使用 IMultilanguage2::ConvertStringFromUnicode 从 UTF-16 进行转换。对于某些语言(日语、中文、韩语),我得到一个转义序列(例如代码页 50225
我是一名优秀的程序员,十分优秀!