为什么我会遇到这个问题?我该如何解决它?Python编码问题
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte
谢谢
为什么我会遇到这个问题?我该如何解决它?Python编码问题
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte
谢谢
某处,也许微妙的是,你所要求的Python把字节流成一个字符的“字符串”。
不要将字符串视为“字节”。一个字符串是一个数字列表,每个数字在Unicode中具有一致的含义。 (#65 =拉丁文资本A.#19968 =汉字“一”/“第一”)。
将Unicode实体列表编码为字节流的方法很多。 Python假定你的字节流是特定的这种方法的结果,称为“UTF-8”。
但是,您的字节流的数据不符合该方法。因此错误被提出。
您需要计算出字节流的编码,并告诉Python该编码。
重要的是要知道,如果您使用的是Python 2或3,以及导致此异常的代码,以查看您的字节来自何处以及处理它们的适当方式。
如果是通过读取文件,您可以明确地处理读取的字节。但是你必须确定文件编码。
如果它来自作为源代码一部分的字符串,那么Python会假设您的源文件有“错误的事情”......可能需要设置$LC_ALL
或$LANG
。现在是了解编码概念的最佳时机,以及文本编辑器如何选择编码编码以及语言和操作系统的标准。
除了Joe所说的之外,chardet是检测源数据编码的有用工具。
某处有一个编码为“Windows-1252”(或“cp1252”)的纯字符串,其中包含“右单引号”(')而不是APOSTROPHE(')。这可能来自您读取的文件,甚至可能来自您的Python源文件;你可以运行Python 2.x并且在脚本开始附近有一个# -*- coding: utf8 -*-
行,或者你可以运行Python 3.x.
您没有提供足够的数据;然而,在某处你有一个cp1252编码的字符串,你试图(显式或隐式)解码为UTF-8的Unicode。这不起作用。
给我们更多信息,我们将再次尝试帮助您。
乔Koberg的回答让我想起了我的一个旧的答案,其中一些人已经发现的有用的:Python UnicodeDecodeError - Am I misunderstanding encode?
你能解释一下你想干什么? – supersighs 2010-07-06 18:00:39
请提供更多信息并发布一些代码。 – Philipp 2010-07-06 18:00:40
请参阅:http://groups.google.com/group/pylons-discuss/browse_thread/thread/ec18b194bd260244?pli=1 – Jon 2010-07-06 18:01:20