字符集问题UTF-8

时间:2016-03-16 06:02:49

标签: python python-2.7 utf-8 character-encoding special-characters

我有一份文件,其中“不包含”一词包含撇号,如下所示。

enter image description here

当我试图通过python程序处理它时,它显示的单词为“doesnÆt”并退出错误,如下所述。

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 70: invalid start byte

我在记事本中打开文档并将编码更改为ANSI(在网络上的某个地方)的UTF-8,现在它正常工作。

但是有人可以点亮,所有这些事情是关于什么的,我怎么能用我的笔记本电脑键盘输入撇号。

1 个答案:

答案 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()