我现在有点迷失UTF-8
我正在寻找术语多字节安全的精确定义。
答案 0 :(得分:4)
当你处理unicode字符时,假设所有字符只占用一个字节或char(java)是不安全的。因此,在阅读或解析字符串时,您需要考虑这一点。
这是一个excellent article,它解释了处理Unicode w.r.t Java时的复杂性。
存储的字符可能占用不一致的字节数。一个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);