为什么在Python的JSON编码中出现UnicodeDecodeError?

我正在使用Solr 3.3索引数据库中的内容。我用Python编写了JSON内容。我设法

。但是当我尝试2027条记录时,Python给了我错误:

Traceback (most recent call last):

File "<console>", line 1, in <module>

File "D:\Technovia\db_indexer\solr_update.py", line 69, in upload_service_details

request_string.append(param_list)

File "C:\Python27\lib\json\__init__.py", line 238, in dumps

**kw).encode(obj)

File "C:\Python27\lib\json\encoder.py", line 203, in encode

chunks = list(chunks)

File "C:\Python27\lib\json\encoder.py", line 425, in _iterencode

for chunk in _iterencode_list(o, _current_indent_level):

File "C:\Python27\lib\json\encoder.py", line 326, in _iterencode_list

for chunk in chunks:

File "C:\Python27\lib\json\encoder.py", line 384, in _iterencode_dict

yield _encoder(value)

UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 68: invalid start byte

哎哟。512kb的字节数是基本限制吗?现有的JSON模块是否有大量替代品?


:由于尝试对 biz_list [2126:] 进行编码而导致的某些数据错误会立即导致错误。这是令人不快的片段:

‘Kaloor的Kadavanthra Road,\ nCochin 682 017 Gurumadhavendra Towers

2楼

我如何配置它以便可以将其编码为JSON?


:答案按预期工作:数据来自以“ latin-1-swedish-

ci”编码的MySQL表。我看到了随机数的意义。很抱歉,在诊断故障时会自发地传达头条新闻的精神。

回答:

很简单,如果您的数据不在utf-8中,请不要使用utf-8编码

>>> json.loads('["\x96"]')

....

UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 0: invalid start byte

>>> json.loads('["\x96"]', encoding="latin-1")

[u'\x96']

如果sstr实例,并且使用utf-8(例如latin-1)以外的基于ASCII的编码进行编码,则encoding必须指定适当的

名称。不允许使用非基于ASCII的编码(例如UCS-2),并且应首先解码 unicode

:要获取正确的unicode值“ \ x96”,请使用“ cp1252”,如Eli Collins所述

>>> json.loads('["\x96"]', encoding="cp1252")

[u'\u2013']

以上是 为什么在Python的JSON编码中出现UnicodeDecodeError? 的全部内容, 来源链接: utcz.com/qa/418923.html

回到顶部