字符集问题 UTF-8
character set issue UTF-8
我有一份文件,其中单词 "doesn't" 包含撇号,如下所示。
当我尝试通过 python 程序处理它时,它显示单词为“does?t”并退出并出现如下所述的错误。
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 70: invalid start byte
我在记事本中打开文档并将编码从 ANSI(在网上某处找到)更改为 UTF-8,现在它工作正常。
但是有人可以解释一下,所有这些都是关于什么的,我如何用我的笔记本电脑键盘输入那种撇号。
MS Word 著名地将引号转换为 "smart-quotes",以便它们正确地环绕单词或指向正确的方向作为撇号。
您没有完全忠实于您的复制粘贴,因此很难确定我们在谈论同一件事。
例如,这里是与普通 ascii 相比的智能引号:
Doesn’t vs. Doesn't
或
“hello” vs. "hello"
注意左边的智能引号是如何弯曲的。在您的屏幕截图中,’
将映射到 Unicode 点 U+2019 ('RIGHT SINGLE QUOTATION MARK')。您不能使用 Windows 组合键并键入 Unicode 值来轻松地手动键入弯引号。
您可能已将此文本保存为 Windows-1252(西欧)编码(又名 ANSI),它分配了字节 0x92
。然后,您将其加载到 Python 但传递了错误的 UTF-8 编码。那是你看到异常的时候。
以后的处理方法是在Python中打开文件时指定正确的编码。例如
with io.open("myfile.txt", 'r', encoding="windows-1252") as my_file:
my_data = my_file.read()
我有一份文件,其中单词 "doesn't" 包含撇号,如下所示。
当我尝试通过 python 程序处理它时,它显示单词为“does?t”并退出并出现如下所述的错误。
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 70: invalid start byte
我在记事本中打开文档并将编码从 ANSI(在网上某处找到)更改为 UTF-8,现在它工作正常。
但是有人可以解释一下,所有这些都是关于什么的,我如何用我的笔记本电脑键盘输入那种撇号。
MS Word 著名地将引号转换为 "smart-quotes",以便它们正确地环绕单词或指向正确的方向作为撇号。
您没有完全忠实于您的复制粘贴,因此很难确定我们在谈论同一件事。
例如,这里是与普通 ascii 相比的智能引号:
Doesn’t vs. Doesn't
或
“hello” vs. "hello"
注意左边的智能引号是如何弯曲的。在您的屏幕截图中,’
将映射到 Unicode 点 U+2019 ('RIGHT SINGLE QUOTATION MARK')。您不能使用 Windows 组合键并键入 Unicode 值来轻松地手动键入弯引号。
您可能已将此文本保存为 Windows-1252(西欧)编码(又名 ANSI),它分配了字节 0x92
。然后,您将其加载到 Python 但传递了错误的 UTF-8 编码。那是你看到异常的时候。
以后的处理方法是在Python中打开文件时指定正确的编码。例如
with io.open("myfile.txt", 'r', encoding="windows-1252") as my_file:
my_data = my_file.read()