引自here,
默认编码与平台有关,因此此代码可能适用于您的计算机(如果您的默认编码为utf-8),但是当您将其分发给其他人时(默认编码不同,如CP-1252)。
上面引用的代码:
fp = open('text.txt') # Assuming file exists
a_string = file.read()
我在当前目录中创建了一个名为text.txt
(带随机内容)的文件,其编码为“ANSI 1252”(使用notepad ++检查)。我已经使用
import locale
print(locale.getpreferredencoding())
给出输出
cp1252
读取文件的代码(我在引言下方提供的代码)按预期工作。它甚至在我使用
时也能正常工作fp = open('text.txt', encoding='utf-8') # or `fp = open('text.txt', encoding='cp1252')`
上述代码如何适用于两种不同的编码?它不应该给UnicodeDecodeError
或类似的东西吗?
答案 0 :(得分:1)
如果输入包含编码映射之外的字符,则解码将失败。如果您的文件纯粹是ASCII,那么在两种情况下都会完全相同。
答案 1 :(得分:1)
查看here,映射是相同的。
根据我的理解,unicode标准旨在向后兼容ascii。