【发布时间】:2016-07-14 12:33:48
【问题描述】:
我搜索并发现了许多类似的问题和文章,但没有一个可以让我解决问题。
我在 Windows 10 上使用 Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)]。
我有一个简单的文本文件,它以 UTF-8 为 Windows 编码,如下所示:
我要做的就是将此文件的内容读入 Python 字符串并在标准控制台等中正确显示。
这是惨败的第一次尝试:
file_name=r'c:\temp\encoding_test.txt'
fh=open(file_name,'r')
f_str=fh.read()
fh.close()
print(f_str)
打印语句引发异常:
'charmap' 编解码器无法对位置 100 中的字符 '\u201e' 进行编码:字符映射到未定义
使用调试器,f_str 包含以下内容:
'我希望在将此文件读入 Python 后正确显示以下字符:\n\nÄÖÜäöüß\n'
这对我来说已经很令人费解了。 Python 3 不是到处都使用 UTF-8 作为默认值吗?还有什么其他编码可以工作?我尝试了所有 Notepad++ 支持的,都没有。
好的,稍微复杂一点,我试过了:
import codecs
file_name=r'c:\temp\encoding_test.txt'
my_encoding='utf-8'
fh=codecs.open(file_name,'r',encoding=my_encoding)
f_str=fh.read().encode(my_encoding)
fh.close()
print(f_str)
这至少不会引发异常,但会产生
b'我希望在将此文件读入 Python 后正确显示以下字符:\r\n\r\n\xc3\x84\xc3\x96\xc3\x9c\xc3\xa4\xc3\xb6\ xc3\xbc\xc3\x9f\r\n' 我
这对我来说完全是一团糟。这里有人可以帮我解决这个问题吗?
【问题讨论】: