我有一份文件,其中“不包含”一词包含撇号,如下所示。
当我试图通过python程序处理它时,它显示的单词为“doesnÆt”并退出错误,如下所述。
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 70: invalid start byte
我在记事本中打开文档并将编码更改为ANSI(在网络上的某个地方)的UTF-8,现在它正常工作。
但是有人可以点亮,所有这些事情是关于什么的,我怎么能用我的笔记本电脑键盘输入撇号。
答案 0 :(得分:0)
MS Word着名地将引号转换为"智能引号",以便它们正确地环绕单词或指向正确的方向作为撇号。
你还没有完全忠实于你的复制粘贴,所以我们很难确定我们是在谈论同样的事情。
例如,这里的智能引号与普通的ascii相比:
不会与不会
或
“你好”与#34;你好"
请注意左侧的智能引号是如何调整的。在屏幕截图中,’
将被映射到Unicode点U + 2019('正确的单引号标记')。您无法使用Windows组合键并输入Unicode值轻松手动键入智能引号。
您可能会将此文本保存为Windows-1252(西欧)编码(又称ANSI),该编码分配了字节0x92
。然后,您将其加载到Python中,但传递了错误的UTF-8编码。那是你看到异常的时候。
将来处理此问题的方法是在Python中打开文件时指定正确的编码。 E.g。
with io.open("myfile.txt", 'r', encoding="windows-1252") as my_file:
my_data = my_file.read()