我搜索了许多类似的问题和文章,但没有一个可以解决这个问题。
我使用的是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字符串中,并在标准控制台中正确显示。
以下是第一次尝试,失败得惨痛:
打印语句引发了一个异常:
'charmap'编解码器无法在位置100处编码字符'\u201e':字符映射到未定义
使用调试器,f_str包含以下内容:
'I would like the following characters to display correctly after reading this file into Python:\n\nÄÖÜäöüß\n'
这已经让我非常困惑了。Python 3不是在所有地方都使用UTF-8作为默认值吗?还有哪些编码可以工作?我尝试了Notepad++支持的所有编码,但都不起作用。
好的,再深入一点,我尝试了:
我使用的是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包含以下内容:
'I would like the following characters to display correctly after reading this file into 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)
这不会引发异常,至少如此,但会产生以下结果:
“我希望在将文件读入Python后,能正确显示以下字符:\r\n\r\n\xc3\x84\xc3\x96\xc3\x9c\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x9f\r\n”
对我来说,这完全是一团糟。请问有谁能帮我梳理一下?