尝试将行保存到db时,我收到以下异常:
Unexpected error: (<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('latin-1', u"First 'A\u043a' Last", 7, 8, 'ordinal not in range(256)'), <traceback object at 0x106562908>)
在插入之前,我将字典中的每个字符串转换为latin-1
,如下所示:
for k,v in row.items():
if type(v) is str:
row[k] = v.decode('utf-8').encode('latin-1')
违规字符似乎是'A\u043a'
- 在其他情况下似乎还有其他字符也“不在范围内”。
帮助表示赞赏。
答案 0 :(得分:1)
解决。问题是尝试解码已经是UTF-8的字符串。我还在encode()
参数中添加了'ignore',
v.encode('latin-1', 'ignore')
这可以确保所有不可编码的字符都替换为'?'