当我尝试在记事本中保存带有非英语文本的文本文件时,可以选择Unicode,Unicode Big Endian和UTF-8之间。这些格式之间有什么区别?
假设我不希望任何向后兼容性(与较旧的OS版本或应用程序兼容),并且我不关心文件大小,那么以下哪种格式更好?
(假设文本除了其他语言外,还可以使用中文或日文等语言。)
注意:从下面的答案和评论看来,在记事本术语中,Unicode是UTF-16(小端),Unicode大端是UTF-16(大端),而UTF-8是UTF-8。
当我尝试在记事本中保存带有非英语文本的文本文件时,可以选择Unicode,Unicode Big Endian和UTF-8之间。这些格式之间有什么区别?
假设我不希望任何向后兼容性(与较旧的OS版本或应用程序兼容),并且我不关心文件大小,那么以下哪种格式更好?
(假设文本除了其他语言外,还可以使用中文或日文等语言。)
注意:从下面的答案和评论看来,在记事本术语中,Unicode是UTF-16(小端),Unicode大端是UTF-16(大端),而UTF-8是UTF-8。
Answers:
不知道。哪个更好:锯或锤子?:-)
不过,文章中有些内容与手头主题更为相关:
他们说:“看看所有这些零!”,因为他们是美国人,而且他们正在看的英文文本很少使用U + 00FF以上的代码点。他们也是加利福尼亚的自由派嬉皮士,他们想保留(冷笑)。如果它们是德州人,那么他们就不会介意将字节数增加一倍。但是那些加利福尼亚的w弱者不愿将字符串存储空间增加一倍
UTF-32专注于穷举和固定长度表示,所有字符均使用4个字节。这是最直接的转换,直接将Unicode代码点映射到4个字节。显然,它的尺寸效率不是很高。
UTF-16是一种折衷方案,大部分时间都使用2个字节,但每个字符扩展到2 * 2个字节以表示某些字符,这些字符不包括在基本多语言平面(BMP)中。
Unicode字符编码比您想象的要多。
UTF 8
UTF-8编码为可变宽度,范围为1-4个字节,每个字节的高位保留为控制位。第一个字节的前导位指示该字符使用的字节总数。字符代码点的标量值是非控制位的串联。在此表中,x
代表Unicode值的最低8位,y
代表下一个较高的8位,并z
代表高于此的位。
Unicode Byte1 Byte2 Byte3 Byte4
U+0000-U+007F 0xxxxxxx
U+0080-U+07FF 110yyyxx 10xxxxxx
U+0800-U+FFFF 1110yyyy 10yyyyxx 10xxxxxx
U+10000-U+10FFFF 11110zzz 10zzyyyy 10yyyyxx 10xxxxxx
“ Unicode”是“ UTF-16”的另一个术语,它是将Unicode字符集编码为每个字符16位。UTF-8将其编码为每个字符八位。
在这两种情况下,任何溢出都将分配给另外16位或8位。