'utf8'编解码器无法解码位置59中的字节0xdf:无效的连续字节

时间:2014-12-22 06:54:57

标签: python json utf-8

我有以下字符串,我试图在json中嵌入:

mystr = '<url host="bing.com" method="GET" uri="/update?v=1&amp;uid=\xdf\xe2\x80|\xff\xff\xff\xff\xf3\x99\x83|\x88\xe2\x80|\xff\xff\xff\xff\xf6\x80|n\x80|&amp;os=45" user_agent=""/>\n    <url host="zaloopa.co.cc" method="GET" uri="/update?v=1&amp;uid=\xdf\xe2\x80|\xff\xff\xff\xff\xf3\x99\x83|\x88\xe2\x80|\xff\xff\xff\xff\xf6\x80|n\x80|&amp;os=45" user_agent=""/>'

import json
json.dumps('url':mystr)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

  File "/usr/lib64/python2.6/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib64/python2.6/json/encoder.py", line 367, in encode
    chunks = list(self.iterencode(o))
  File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode
    for chunk in self._iterencode_dict(o, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 275, in _iterencode_dict
    for chunk in self._iterencode(value, markers):
  File "/usr/lib64/python2.6/json/encoder.py", line 294, in _iterencode
    yield encoder(o)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xdf in position 59: invalid continuation byte

我尝试了mystr.encode('ascii','ignore),但从技术上讲,这些值中的每一个(如\ xdf)都是在ascii范围内的单个字节。有没有办法可以按摩数据并输入json而不会崩溃。

没有提示该行的编码是什么。

谢谢... Amro

1 个答案:

答案 0 :(得分:2)

mystr = u'<url host="bing.com" method="GET" uri="/update?v=1&amp;uid=\xdf\xe2\x80|\xff\xff\xff\xff\xf3\x99\x83|\x88\xe2\x80|\xff\xff\xff\xff\xf6\x80|n\x80|&amp;os=45" user_agent=""/>\n    <url host="zaloopa.co.cc" method="GET" uri="/update?v=1&amp;uid=\xdf\xe2\x80|\xff\xff\xff\xff\xf3\x99\x83|\x88\xe2\x80|\xff\xff\xff\xff\xf6\x80|n\x80|&amp;os=45" user_agent=""/>'

import json
print json.dumps({'url': mystr}, ensure_ascii=False)