在python中读取unicode文件

问题描述:

那么我有一个包含unicode“û”的文件。然而,这不是正确地读取为处于以下测试例示出:在python中读取unicode文件

print("û") 
with open(r"testfile.txt") as f: 
    for line in f: 
     print(line) 

,其输出:

û 
û 

IDE可以正确显示的字符 - 然而从阅读另一个字符被示出该文件。 如果我在调试器中执行它,我看到f作为“编码”cp1252。不是unicode。

那么我该如何“修复”呢?

在记事本++中打开文件告诉我文件真的是UTF-8。如果我手动将文件更改为Windows代码页1252它似乎工作。但那不是我想要的。

+0

每默认'open'使用由['locale.getpreferredencoding']返回的编码阅读起来(https://docs.python.org/3/library/locale .html#locale.getpreferredencoding),它基本上默认为windows上的cp1252。 – syntonym

打开文件时,可指定编码:

with open(r"testfile.txt", encoding='utf-8') as f: 

您将需要使用的编码参数为“UTF-8”,在打开的文件。 与下面的open()一起看起来如下所示。 您可能需要更多这方面的here

encoding='utf-8'