我使用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
Run Code Online (Sandbox Code Playgroud)
哎哟.512kb的字节是一个基本限制吗?是否有现有JSON模块的高容量替代品?
更新:它是一些数据的错误,因为尝试编码*biz_list [2126:]*会导致立即错误.这是令人讨厌的部分:
'2楼,Gurumadhavendra塔,\nKadavanthra路,Kaloor,\nCochin \ x96 682 017'
如何配置它以便可以编码为JSON?
更新2:答案按预期工作:数据来自以"latin-1-swedish-ci"编码的MySQL表.我在一个随机数字中看到了重要性.很抱歉在诊断故障时自发地引导标题作者的精神.
YOU*_*YOU 14
很简单,如果您的数据不在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']
Run Code Online (Sandbox Code Playgroud)
json.loads
如果
s是str实例并且使用除utf-8之外的基于ASCII的编码(例如,latin-1)进行编码,则encoding必须指定适当的 名称.不允许非基于ASCII的编码(例如UCS-2),应unicode首先将其解码 .
编辑:要获得正确的unicode值"\ x96",请使用"cp1252",如Eli Collins所述
>>> json.loads('["\x96"]', encoding="cp1252")
[u'\u2013']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |