我正在使用Solr 3.3索引数据库中的内容。我用Python编写了JSON内容。我设法 上传2126条记录,这些记录总计523246个字符(约511kb) 。但是当我尝试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 \ x96 682 017 Gurumadhavendra Towers 2楼
我如何配置它以便可以将其编码为JSON?
更新2 :答案按预期工作:数据来自以“ 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']
json.loads 如果s是str实例,并且使用utf-8(例如latin-1)以外的基于ASCII的编码进行编码,则encoding必须指定适当的 名称。不允许使用非基于ASCII的编码(例如UCS-2),并且应首先解码 unicode。
json.loads
如果s是str实例,并且使用utf-8(例如latin-1)以外的基于ASCII的编码进行编码,则encoding必须指定适当的 名称。不允许使用非基于ASCII的编码(例如UCS-2),并且应首先解码 unicode。
s
str
encoding
unicode
编辑 :要获取正确的unicode值“ \ x96”,请使用“ cp1252”,如Eli Collins所述
>>> json.loads('["\x96"]', encoding="cp1252") [u'\u2013']