使用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)
答案 0 :(得分:0)
“它是一个包含消息的字符串,我们想将其转换为ascii,然后将其转储到数据库中”
显示的字符串没有ASCII表示,因此,“将其转换为ascii”是没有意义的。此外,您似乎正在尝试使用模块json
来完成模块codecs
的设计工作。我的猜测是你实际上是在尝试将字符串转换为ISO-8859-1,它可以编码“déjà”
您可能也应该阅读并理解The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),然后您可以提出一个有意义的问题。
答案 1 :(得分:0)
您需要仔细处理Unicode。 Pragmatic Unicode, or How Do I Stop The Pain包含所有细节。您需要知道该字节字符串使用的编码,然后正确解码。