Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字符编码_Python_Utf 8_Ansi_Utf 16 - Fatal编程技术网

Python 字符编码

Python 字符编码,python,utf-8,ansi,utf-16,Python,Utf 8,Ansi,Utf 16,我的文本编辑器允许我以几种不同的字符格式编码Ansi、UTF-8、UTF-8(无BOM)、UTF-16LE和UTF-16BE 他们之间有什么区别 通常认为最好的格式是什么(如果有区别的话,我使用的是Python) 。请注意,“ANSI”通常是CP1252。您可能会在没有BOM表的情况下获得最大的实用程序。忘记ANSI和ASCII的存在吧,它们是不推荐使用的恐龙。 “Ansi”是一个用词不当的词,通常指的是当前平台上默认的8位编码(在“西方”Windows安装上通常是这样)。它只支持一小部分字符(

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

他们之间有什么区别


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

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

您可能会在没有BOM表的情况下获得最大的实用程序。忘记ANSI和ASCII的存在吧,它们是不推荐使用的恐龙。

  • “Ansi”是一个用词不当的词,通常指的是当前平台上默认的8位编码(在“西方”Windows安装上通常是这样)。它只支持一小部分字符(最多256个不同的字符)
  • 是一种可变长度的ASCII兼容编码,能够存储任何和所有Unicode字符。对于支持所有Unicode字符的西方文本来说,这是一个非常好的选择,在一般情况下也是一个非常可行的选择
  • “UTF-8(无BOM)”是Windows给出的使用UTF-8而不写入BOM的名称。由于UTF-8不需要BOM,因此不应使用BOM,这将是正确的选择(几乎所有人都将此版本称为“UTF-8”!)
  • UTF-16LE和UTF-16BE是编码的版本。与UTF-8一样,UTF-16能够表示任何Unicode字符,但它与ASCII不兼容
一般来说,UTF-8是一个很好的总体选择,并且具有广泛的兼容性(请确保不要编写BOM,因为这是大多数其他软件所期望的)

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

“Ansi”只应在您有特定需要与不支持Unicode的遗留应用程序交互时使用

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

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

具体地说,对于Python文件,有两个