【问题标题】:Character Encoding字符编码
【发布时间】:2011-03-02 01:36:35
【问题描述】:

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

它们有什么区别?

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

【问题讨论】:

    标签: python utf-8 ansi utf-16


    【解决方案1】:

    Here。请注意,“ANSI”通常是 CP1252。

    【讨论】:

      【解决方案2】:

      UTF-8 No BOM 可能会让您获得最大的实用性。忘记 ANSI 和 ASCII 的存在吧,它们是被弃用的恐龙。

      【讨论】:

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

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

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

        “Ansi”仅应在您有特定需要与不支持 Unicode 的旧版应用程序交互时使用。

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

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

        对于 Python 文件,有 a way to specify the encoding of your source files

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-31
          • 2013-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-25
          • 1970-01-01
          相关资源
          最近更新 更多