2010-12-16 79 views
2


我现在有点迷失在UTF-8中。
我正在寻找术语多字节安全的准确定义。请定义术语“多字节安全”

+0

字节用于表示单字节字符始终用来表示多字节字符总是8位,即,具有最显著7位,即小于128,和字节上,即大于127那么多字节安全的UTF-8位的是,如果字节是小于128。其它的编码可能对多字节安全的不同的最大值。 – Matt 2016-09-23 01:35:14

回答

4

当你正在处理Unicode字符,它是不是安全地假定所有的字符,只取一个字节或CHAR(JAVA)。所以在读取或解析字符串时,需要考虑这一点。

这是一个excellent article,它解释了在处理Unicode w.r.t Java时的复杂性。

  1. 存储字符会占用的字节数不一致。 UTF-8编码字符可能在 之间(LATIN_CAPITAL_LETTER_A)和四个 (MATHEMATICAL_FRAKTUR_CAPITAL_G) 字节之间。可变宽度编码具有 影响读取和 从字节数组解码。

  2. 并非所有的代码点都可以存储在char中。所述 MATHEMATICAL_FRAKTUR_CAPITAL_G示例 在于对 字符补充范围,并且不能被存储在16位 。它必须由两个 连续字符值表示,它们本身都不具有意义,它们都不是 。 字符类为使用32位代码点的 提供方法。

// Unicode code point to char array 
    char[] math_fraktur_cap_g = Character.toChars(0x1D50A);