2011-12-07 2 views
1

Я получаю следующее исключение при попытке сохранить строку в БД:MySQL-Python исключение кодировки символов на дб вставки

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

Решено. Проблема заключалась в попытке декодирования строки, которая уже была UTF-8. Я также добавил «игнорировать» к encode() аргументов,

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

Это обеспечивает любые не кодируемые символы заменяются на символ «?»