the*_*ava 134 java unicode utf-8 utf-16 utf
UTF-8和UTF-16之间的区别?我们为什么需要这些?
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "This is some text";
md.update(text.getBytes("UTF-8")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();
Run Code Online (Sandbox Code Playgroud)
Ser*_*nov 279
我相信网上有很多关于这方面的好文章,但这里有一个简短的总结.
UTF-8和UTF-16都是可变长度编码.但是,在UTF-8中,字符可能占用最少8位,而在UTF-16中,字符长度以16位开始.
主要UTF-8专业人士:
主要UTF-8缺点:
主要UTF-16专业人士:
char作为字符串的基本组件.主要UTF-16缺点:
一般来说,UTF-16通常更适合内存中表示,因为BE/LE与那里无关(只使用本机顺序)并且索引更快(只是不要忘记正确处理代理对).另一方面,UTF-8非常适用于文本文件和网络协议,因为没有BE/LE问题,并且空终止通常会派上用场,并且兼容ASCII.
Jon*_*eet 18
它们只是表示Unicode字符的不同方案.
两者都是可变长度的 - UTF-16对基本多语言平面(BMP)中的所有字符使用2个字节,其中包含常用的大多数字符.
对于BMP中的字符,UTF-8使用1到3个字节,对于U + 0000到U + 1FFFFF的当前Unicode范围内的字符最多使用4个字符,如果有必要,可扩展到U + 7FFFFFFF ...但值得注意的是,所有ASCII字符均以单字节表示.
出于消息摘要的目的,只要尝试重新创建摘要的每个人都使用相同的选项,您选择哪一个都无关紧要.
有关UTF-8和Unicode的更多信息,请参阅此页面.
(请注意,所有Java字符都是BMP中的UTF-16代码点;要表示U + FFFF以上的字符,您需要在Java中使用代理项对.)
| 归档时间: |
|
| 查看次数: |
110480 次 |
| 最近记录: |