2

我的文本编辑器允许我以几种不同的字符格式进行编码 Ansi、UTF-8、UTF-8(无 BOM)、UTF-16LE 和 UTF-16BE。

它们之间有什么区别?

什么通常被认为是最好的格式(如果有区别,我正在使用 Python)?

4

3 回答 3

8
  • “Ansi”是用词不当,通常指的是某些 8 位编码,这是当前平台上的默认值(在“西方”Windows 安装中,通常是Windows-1252)。它只支持一小组字符(最多 256 个不同的字符)。
  • UTF-8是一种可变长度、兼容 ASCII 的编码,能够存储任何和所有 Unicode 字符。对于应该支持所有 Unicode 字符的西方文本来说,这是一个相当不错的选择,并且在一般情况下是一个非常可行的选择。
  • “UTF-8(无 BOM)”是 Windows 在不编写Byte Order Marker的情况下使用 UTF-8 的名称。由于 UTF-8不需要BOM ,因此不应使用它,这将是正确的选择(几乎所有其他人都将此版本简称为“UTF-8”!)。
  • UTF-16LE 和 UTF-16BE 是UTF-16编码的Little Endian 和 Big Endian版本。与 UTF-8 一样,UTF-16 能够表示任何 Unicode 字符,但它不兼容 ASCII。

一般来说,UTF-8 是一个很好的整体选择并且具有广泛的兼容性(只要确保不要编写 BOM,因为这是大多数其他软件所期望的)。

如果您的大部分文本由非 ASCII 字符组成(即不使用基本的拉丁字母),UTF-16 可能会占用更少的空间。

仅当您有特定需要与不支持 Unicode 的遗留应用程序交互时,才应使用“Ansi”。

任何编码的重要一点是,它们是除了数据之外还需要进行通信的元数据。这意味着您必须知道某些字节流的编码才能正确地将其解释为文本。因此,您应该使用记录所使用的实际编码的格式(XML 是这里的主要示例),或者在给定的上下文中标准化单个编码并仅使用它。

例如,如果您开始一个软件项目,那么您可以指定您的所有源代码都采用给定的编码(再次:我建议使用 UTF-8)并坚持下去。

特别是对于 Python 文件,有一种方法可以指定源文件的编码

于 2010-06-10T08:42:31.977 回答
3

您可能会通过UTF-8 No BOM 获得最大的实用程序。忘记 ANSI 和 ASCII 的存在,它们是不推荐使用的恐龙。

于 2010-06-10T08:37:49.337 回答
3

在这里。请注意,“ANSI”通常是 CP1252。

于 2010-06-10T08:35:53.003 回答