为什么我会遇到这个问题?以及如何解决它?
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte
谢谢
答案 0 :(得分:1)
某处,也许是巧妙的,你要求Python将字节流转换为字符串“字符串”。
不要将字符串视为“字节”。字符串是数字列表,每个数字在Unicode中具有约定的含义。 (#65 = Latin Capital A.#19968 =汉字“One”/“First”)。
有许多方法可以将Unicode实体列表编码为字节流。 Python假设您的字节流是特定此类方法的结果,称为“UTF-8”。
但是,您的字节流具有与该方法不对应的数据。因此提出了错误。
您需要弄清楚字节流的编码,并告诉Python该编码。
重要的是要知道你是使用Python 2还是3,以及导致此异常的代码,以查看字节的来源以及处理它们的适当方法。
如果是从读取文件,您可以明确处理读取的字节。但是你必须确保文件编码。
如果它来自作为源代码一部分的字符串,那么Python假设您的源文件“错误”......可能需要设置$LC_ALL
或$LANG
。现在是牢固理解编码概念,文本编辑器如何选择编码以及语言和操作系统的标准的好时机。
答案 1 :(得分:0)
除了Joe所说的,chardet是检测源数据编码的有用工具。
答案 2 :(得分:0)
某处您有一个纯字符串,编码为“Windows-1252”(或“cp1252”),其中包含“RIGHT SINGLE QUOTATION MARK”(')而不是APOSTROPHE(')。这可能来自您阅读的文件,甚至可能来自您的Python源文件;你可以运行Python 2.x并在脚本开头附近有一个# -*- coding: utf8 -*-
行,或者你可以运行Python 3.x.
您没有提供足够的数据;但是,在某处您有一个cp1252编码的字符串,您可以尝试(显式或隐式)将unicode解码为utf-8。这不起作用。
向我们提供更多信息,我们会再次尝试为您提供帮助。
Joe Koberg的回答让我想起了我的一个较老的答案,有些人认为这有帮助:Python UnicodeDecodeError - Am I misunderstanding encode?