encoding ='utf-8'在使用中文字符打开utf-8文件时引发UnicodeEncodeError

时间:2013-06-04 20:21:46

标签: python encoding utf-8 python-3.x

我无法使用任何中文字符打开文件,并将设置为utf-8

text = open('file.txt', mode='r', encoding='utf-8').read()
print(text)

UnicodeEncodeError: 'charmap' codec can't encode character '\u70e6' in position 0: character maps to <undefined>

该文件是100%utf-8 http://asdfasd.net/423/file.txt
http://asdfasd.net/423/test.py
如果我删除encoding='utf-8'一切正常。

编码有什么问题?
打开文件时我总是使用encoding='utf-8',现在我不知道现在发生了什么。

1 个答案:

答案 0 :(得分:1)

您看到的例外来自打印您的数据。打印要求您将数据编码为终端或Windows控制台使用的编码。

您可以从异常(以及回溯中看到这一点,但您没有包含它);如果您在解码数据时遇到问题(这是从文件中读取时会发生的情况),那么您将获得UnicodeDecodeError,而是获得UnicodeEncodeError

您需要调整终端或控制台编码,或者不打印数据

有关问题排查帮助,请参阅http://wiki.python.org/moin/PrintFails