Unicode、Unicode Big Endian 还是 UTF-8?有什么不同?哪种格式更好?

Ash*_*ppa 19 notepad unicode utf-8 endian

当我尝试在记事本中保存带有非英语文本的文本文件时,我可以选择在UnicodeUnicode Big EndianUTF-8之间进行选择。这些格式有什么区别?

假设我想要任何向后兼容性(与较旧的操作系统版本或应用程序)并且我关心文件大小,这些格式中哪种更好?

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

注意:从下面的答案和评论看来,在记事本行话中,Unicode 是 UTF-16(Little Endian),Unicode Big Endian 是 UTF-16(Big Endian),而 UTF-8 是 UTF-8。

Jas*_*ker 19

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

Unicode 不是 UTF

文章中有一点与手头的主题更相关:

  • UTF-8 侧重于最小化 ASCII 集中字符表示的字节大小(可变长度表示:每个字符用 1 到 4 个字节表示,而 ASCII 字符都适合 1 个字节)。正如乔尔所说:

“看看那些零!” 他们说,因为他们是美国人,他们正在查看很少使用 U+00FF 以上代码点的英文文本。他们也是加利福尼亚州的自由嬉皮士,他们想要保护(冷笑)。如果他们是德州人,他们就不会介意大吃大喝两倍的字节数。但是那些加利福尼亚的懦夫无法忍受将字符串的存储量增加一倍的想法

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

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

另请参阅每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最小值(没有任何借口!)

  • 问题来自这样一个事实,即 Unicode 是一种“编码”,而不是从数字到字节的意义上。UTF-8/16/32 都是 Unicode 编码,但 Unicode 本身是符号到数字的映射。我认为他们本可以使用更独特的术语来避免这种混淆。 (4认同)
  • 尽管如此,对于问题的 OP,很可能该应用程序的意思是“UTF-16”,其中它说的是“Unicode”。 (4认同)
  • 我不确定 UTF-8 的目标是“保守”,而不是向后兼容 ASCII。 (3认同)

Mar*_*som 5

对于欧洲语言,UTF-8 较小。对于东方语言来说,差异并不那么明显。

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