Unicode、Unicode Big Endian 还是 UTF-8?它们有什么区别?哪种格式更好?

Unicode、Unicode Big Endian 还是 UTF-8?它们有什么区别?哪种格式更好?

当我尝试保存文本文件使用记事本中的非英语文本时,我可以选择统一码Unicode 大端UTF-8. 这些格式有什么区别?

假设我这么做不是希望获得向后兼容性(与旧版操作系统或应用程序),我确实希望不是关心文件大小,哪种格式更好?

(假设文本除了其他语言外,还可以是中文或日语等语言。)

笔记:从下面的答案和评论来看,在记事本术语中,Unicode 是 UTF-16(Little Endian),Unicode Big Endian 是 UTF-16(Big Endian),UTF-8 就是 UTF-8。

答案1

不知道。哪个更好:锯子还是锤子?:-)

Unicode 不是 UTF

不过,文章中有一些内容与当前主题更相关:

  • UTF-8 致力于最小化表示 ASCII 字符集的字节大小(可变长度表示:每个字符用 1 到 4 个字节表示,所有 ASCII 字符都用 1 个字节表示)。正如 Joel 所说:

“看看那些零!”他们说,因为他们是美国人,他们正在看的英语文本很少使用 U+00FF 以上的代码点。他们也是加州的自由嬉皮士,想要节约(冷笑)。如果他们是德克萨斯人,他们不会介意消耗两倍的字节数。但那些加州懦夫无法忍受将字符串所需的存储空间增加一倍的想法

  • UTF-32 注重详尽性和固定长度表示,所有字符都使用 4 个字节。这是最直接的转换,直接将 Unicode 代码点映射到 4 个字节。显然,它的尺寸效率不高。

  • UTF-16 是一种折衷方案,大多数时候使用 2 个字节,但扩展为每个字符 2 * 2 个字节来表示某些字符,即未包含在基本多语言平面 (BMP) 中的字符。

另请参阅每个软件开发人员必须绝对、积极地了解有关 Unicode 和字符集的最低要求(没有借口!)

答案2

对于欧洲语言来说,UTF-8 较小。对于东方语言来说,区别不是那么明显。

两者都可以处理所有可能的 Unicode 字符,因此兼容性应该没有差别。

答案3

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
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • 统一编码:UTF-32

答案4

文本文件等小文件的唯一真正优势是生成的文件大小。UTF-8 通常生成较小的文件。但对于中文/日文文本,这种差异可能不那么明显。

相关内容