当您处理Unicode字符时,假设所有字符都只占用一个字节或char(java)是不安全的。因此,在读取或解析字符串时,需要考虑到这一点。
这是一篇很棒的文章,解释了处理Java的Unicode时的复杂性。
存储的字符可能占用不一致的字节数。UTF-8编码的字符可能需要一个(LATIN_CAPITAL_LETTER_A)到四个(MATHEMATICAL_FRAKTUR_CAPITAL_G)字节。可变宽度编码对于读入字节数组和从字节数组进行解码具有重要意义。
并非所有代码点都可以存储在char中。MATHEMATICAL_FRAKTUR_CAPITAL_G示例位于字符的补充范围内,不能以16位存储。它必须由两个连续的char值表示,这两个值本身都不有意义。Character类提供了使用32位代码点的方法。
// Unicode code point to char array
char[] math_fraktur_cap_g = Character.toChars(0x1D50A);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1285 次 |
| 最近记录: |