db insert上的MySQL-Python字符编码异常

时间:2011-12-07 14:09:48

标签: mysql encoding mysql-python

尝试将行保存到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' - 在其他情况下似乎还有其他字符也“不在范围内”。

帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

解决。问题是尝试解码已经是UTF-8的字符串。我还在encode()参数中添加了'ignore',

v.encode('latin-1', 'ignore')

这可以确保所有不可编码的字符都替换为'?'