vit*_*aut 12 java unicode java-native-interface utf-8
为什么Java使用修改的UTF-8而不是标准的UTF-8用于对象序列化和JNI?
一种可能的解释是,修改后的UTF-8不能嵌入空字符,因此可以使用以空终止字符串操作的函数.还有其他原因吗?
处理增补字符(通过不处理它们)更快更简单.
Java将字符表示为16位char,但unicode已演变为包含超过64K字符.因此,一些字符,即补充字符,必须char在Java中用2 秒(代理对)编码.
严格的UTF-8要求编码器将代理对转换为字符,然后将字符编码为字节.解码器需要将补充字符拆分回代理对.
chars -> character -> bytes -> character -> chars
Run Code Online (Sandbox Code Playgroud)
由于两端都是Java,我们可以采用一些快捷方式并直接在char关卡上编码
char -> bytes -> char
Run Code Online (Sandbox Code Playgroud)
编码器和解码器都不需要担心代理对.
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |