0

使用 python 解析时的以下消息给出以下错误。消息来自json文件消息:

"Daca nu il stiti déjà, cu siguranta o sa va smulga un zambet. O portie de motivatie pentru toata lumea. :)", 

错误:

Traceback (most recent call last):
  File "C:\Users\X\Desktop\store_post.py", line 328, in <module>
    post_l_1 =jsonToPost.return_post_list(data2)
  File "C:\Users\X\Desktop\jsonToPost.py", line 20, in return_post_list
    post_message = json.dumps(read_,sort_keys = True, indent =2,skipkeys=True)
  File "C:\Python27\lib\json\__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "C:\Python27\lib\json\encoder.py", line 195, in encode
    return encode_basestring_ascii(o)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 18: invalid continuation byte

相关的代码片段是:

post_message = json.dumps(read_,sort_keys = True, indent =2,skipkeys=True)
post_message = json.loads(post_message)
4

2 回答 2

0

您需要仔细处理 Unicode。 Pragmatic Unicode,或 How Do I Stop The Pain包含所有细节。您需要知道该字节字符串使用什么编码,然后正确解码。

于 2012-06-22T00:09:49.943 回答
0

“它是一个包含消息的字符串,我们要将其转换为 ascii,然后将其转储到数据库中”

显示的字符串没有 ASCII 表示,因此,“将其转换为 ascii”是没有意义的。此外,听起来您正在尝试使用模块json来完成模块codecs设计的工作。我的猜测是您实际上是在尝试将字符串转换为可以编码“déjà”的ISO-8859-1

您可能还应该阅读并理解每个软件开发人员绝对、肯定必须了解 Unicode 和字符集(没有借口!)的绝对最小值,然后也许您可以提出一个有意义的问题。

于 2012-06-21T23:08:05.123 回答