English 中文(简体)
在多字节字符集换行符控制字符
原标题:
  • 时间:2009-04-07 05:33:53
  •  标签:

I have some Perl code that translates new-lines and line-feeds to a normalized form. The input text is Japanese, so that there will be multi-byte characters.

现在还有可能做这个转换逐字节的基础上(我认为目前),或我需要检测字符集和支持Unicode支持?换句话说,是广受欢迎的编码(shift - jis, EUC-JP, utf - 8, iso - 2022 - jp)使用字节字符集的一部分可能会被误认为是ASCII控制字符?

我只需要CR和低频工作。

<强>更新:< /强>添加iso - 2022 - jp。这是一个看起来最麻烦的时髦的转义序列……

最佳回答

没有你提到的4编码(shift - jis, utf - 8, EUC-JP iso - 2022 - jp)使用CR或低频特征在日本字符。utf - 8和EUC-JP低ascii字符之间没有任何重叠和字节内日本字符。然而,对于shift - jis、iso - 2022 - jp,有重叠,但不是在你发现CR和低频范围。

For ISO-2022-JP,
First-byte range: 0x21 - 0x7E
Second-byte range: 0x21 - 0x7E

和转义序列之间来回切换各种字符集:

0x1B, 0x28, 0x24, 0x40, 0x42, and 0x4A

正如你所看到的,没有一个字符用于编码日本字符与CR iso - 2022 - jp重叠或低频。

For Shift-JIS,
First-byte range: 0x81 - 0x9F, 0xE0 - 0xEF
Second-byte range: 0x40 - 0x7E, 0x80 - 0xFC
Half-width katakana: 0xA1 - 0xDF

再一次,没有重叠CR和低频。

问题回答

所有这些字符集第一128 ASCII代码点完全相同——也就是说,他们只使用一个字节对ASCII字符进行编码,包括CR (0 x0d)和低频(0 x0a)。你不应该有任何问题。

iso - 2022 - jp使用转变/移出94年可打印ASCII字符分配不同的含义,让控制字符包括CR和低频。

这是(规范性)细节utf - 8编码:«[…]值0 x00 . .0 x7f不会出现在任何字节表示的其他Unicode代码点[…]。»,«Unicode®标准- Version 11.0核心规范»——2018年6月——< a href = " https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf " rel = " nofollow noreferrer " > https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf < / >





相关问题
热门标签