【发布时间】:2014-10-06 11:59:46
【问题描述】:
我现在已经阅读了很多关于 Python 3 中 UTF-8 编码的主题,但它仍然不起作用,而且我找不到我的错误。
我的代码是这样的
def main():
with open("test.txt", "rU", encoding='utf-8') as test_file:
text = test_file.read()
print(str(len(text)))
if __name__ == "__main__":
main()
我的test.txt 文件如下所示
ö
我收到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 0: invalid start byte
【问题讨论】:
-
您的文件不是 UTF-8 编码的。
-
它是一个测试文件。我应该用 Python3 编写一个能够读取它的程序。并再次写出来。它应该是 UTF-8。
-
这里有两个问题 - 您的文件不是 UTF-8,如果不是,则其中包含
ä以外的其他内容。 -
我从大学的服务器上得到了测试文件。所以我想文件应该没问题。有趣的是,我可以使用 open(test.txt).read() 读取文件,并且它可以正常工作......我不明白。
-
@GVVMultigamingClan:
open()withoutencoding将您的 系统默认值 作为编码。如果open('test.txt').read()有效,则文件不是 UTF-8,而是locale.getpreferredencoding()返回的任何内容。