为什么以两种不同的编码打开文件按预期工作?

时间:2015-06-09 08:26:35

标签: python python-3.x encoding character-encoding text-files

引自here

  

默认编码与平台有关,因此此代码可能适用于您的计算机(如果您的默认编码为utf-8),但是当您将其分发给其他人时(默认编码不同,如CP-1252)。

上面引用的代码:

fp = open('text.txt') # Assuming file exists
a_string = file.read()

我在当前目录中创建了一个名为text.txt(带随机内容)的文件,其编码为“ANSI 1252”(使用notepad ++检查)。我已经使用

检查了我的系统(windows)的默认编码
import locale
print(locale.getpreferredencoding())

给出输出

cp1252

读取文件的代码(我在引言下方提供的代码)按预期工作。它甚至在我使用

时也能正常工作
fp = open('text.txt', encoding='utf-8') # or `fp = open('text.txt', encoding='cp1252')`

上述代码如何适用于两种不同的编码?它不应该给UnicodeDecodeError或类似的东西吗?

2 个答案:

答案 0 :(得分:1)

如果输入包含编码映射之外的字符,则解码将失败。如果您的文件纯粹是ASCII,那么在两种情况下都会完全相同。

答案 1 :(得分:1)

查看here,映射是相同的。

根据我的理解,unicode标准旨在向后兼容ascii。