我有一个带有一些非ASCII字符的文件。
$ file bi companies.txt
text/plain; charset=utf-8
在我的桌面上使用Python 3.4我可以open
这个文件没有问题:
>>> open('companies.txt').read()
'...'
在使用Python 3.3的CI系统上,我得到了这个:
>>> open('companies.txt').read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.3/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1223: ordinal not in range(128)
但是如果我明确指定encoding='utf8'
,它就可以了:
>>> open('companies.txt', encoding='utf8').read()
'...'
在两个系统上,sys.getdefaultencoding
都会返回'utf-8'
。
是什么原因导致系统表现不同?为什么CI系统试图使用ascii?