Python 3 UTF-8编码实际上不起作用
我现在已经读了很多关于Python3中UTF-8编码的主题,但它仍然不起作用,我也找不到我的错误 我的代码如下所示Python 3 UTF-8编码实际上不起作用,python,encoding,utf-8,Python,Encoding,Utf 8,我现在已经读了很多关于Python3中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文件
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
文件如下所示
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()
ö
我得到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 0: invalid start byte
您的文件不是UTF-8编码的。我也不确定F6在
ä
中使用了什么编码;该代码点是拉丁语1和CP-1252中ö
的编码:
>>> b'\xf6'.decode('utf8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf6 in position 0: invalid start byte
>>> b'\xf6'.decode('latin1')
'ö'
>>b'\xf6'.解码('utf8')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xf6:无效的开始字节
>>>b'\xf6'.解码('latin1')
'ö'
您需要将该文件另存为UTF-8,使用任何用于创建该文件的工具
如果open('text').read()
有效,则可以使用默认的系统编码对文件进行解码。见:
encoding是用于解码或编码文件的编码的名称。这只能在文本模式下使用。默认编码依赖于平台(无论返回什么),但是可以使用Python支持的任何编码
这并不是说您正在使用正确的编码读取文件;这只是意味着默认编码没有中断(遇到的字节没有字符映射)。它仍然可能将这些字节映射到错误的字符
我敦促您仔细阅读Unicode和Python:
- 乔尔斯波尔斯基
- 内德·巴奇尔德
ä
之外还有其他内容。我从大学的服务器上得到了测试文件。所以我想这个文件应该没问题。提示是我可以用open(test.txt).read()读取文件,并且它可以正常工作。。。我不明白。@GVVMultigamingClan:open()
withoutencoding
将您的系统默认值作为编码。如果open('test.txt').read()。