Исключение кодировки символов MySQL-Python при вставке БД - PullRequest
1 голос
/ 07 декабря 2011

При попытке сохранить строку в БД я получаю следующее исключение:

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 Ответ

1 голос
/ 08 декабря 2011

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

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

Это гарантирует, что любые не кодируемые символы будут заменены на '?'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...