2010-07-06 71 views
0

为什么我会遇到这个问题?我该如何解决它?Python编码问题

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte 

谢谢

+1

你能解释一下你想干什么? – supersighs 2010-07-06 18:00:39

+2

请提供更多信息并发布一些代码。 – Philipp 2010-07-06 18:00:40

+2

请参阅:http://groups.google.com/group/pylons-discuss/browse_thread/thread/ec18b194bd260244?pli=1 – Jon 2010-07-06 18:01:20

回答

1

某处,也许微妙的是,你所要求的Python把字节流成一个字符的“字符串”。

不要将字符串视为“字节”。一个字符串是一个数字列表,每个数字在Unicode中具有一致的含义。 (#65 =拉丁文资本A.#19968 =汉字“一”/“第一”)。

将Unicode实体列表编码为字节流的方法很多。 Python假定你的字节流是特定的这种方法的结果,称为“UTF-8”。

但是,您的字节流的数据不符合该方法。因此错误被提出。

您需要计算出字节流的编码,并告诉Python该编码。

重要的是要知道,如果您使用的是Python 2或3,以及导致此异常的代码,以查看您的字节来自何处以及处理它们的适当方式。

如果是通过读取文件,您可以明确地处理读取的字节。但是你必须确定文件编码。

如果它来自作为源代码一部分的字符串,那么Python会假设您的源文件有“错误的事情”......可能需要设置$LC_ALL$LANG。现在是了解编码概念的最佳时机,以及文本编辑器如何选择编码编码以及语言和操作系统的标准。

0

除了Joe所说的之外,chardet是检测源数据编码的有用工具。

0

某处有一个编码为“Windows-1252”(或“cp1252”)的纯字符串,其中包含“右单引号”(')而不是APOSTROPHE(')。这可能来自您读取的文件,甚至可能来自您的Python源文件;你可以运行Python 2.x并且在脚本开始附近有一个# -*- coding: utf8 -*-行,或者你可以运行Python 3.x.

您没有提供足够的数据;然而,在某处你有一个cp1252编码的字符串,你试图(显式或隐式)解码为UTF-8的Unicode。这不起作用。

给我们更多信息,我们将再次尝试帮助您。

乔Koberg的回答让我想起了我的一个旧的答案,其中一些人已经发现的有用的:Python UnicodeDecodeError - Am I misunderstanding encode?