При получении данных из таблицы MySQL (используя Connector/Python) текстовые строки имеют вид:
Калашникова Елена Сергеевна
и
Тищенко Ð\x90ндрей ВаÑ\x81ильевич
Декодер показывает, что это кодировка CP1252, поэтому в Python3 мы можем обработать их str.encode('cp1252').decode('utf8'), однако если этот метод работает для первой строки, то не работает для второй.
UnicodeEncodeError: 'charmap' codec can't encode character '\x90' in position 16: character maps to undefined
Проблема - в специальных символах \x90, \x9D, \x8F, \x8D, \x81. В описании Windows-1252 указано, что эти коды относятся к C1 control codes.
Каким образом можно декодировать эти строки в Python3, не изменяя базу MySQL? Или где ещё может быть источник проблемы?
charset(utf8) при подключении к базе данных. – aleksandr barakin Jun 30 '15 at 08:22print(repr(str))Получаются такие же результаты ровным счётом:Тищенко Ð\x90ндрей ВаÑ\x81ильевичУказывать явно кодировку базы при импорте пробовал - cp1252 в списке кодировок нет, utf8 даёт такой вот точно результат, что и описан.
– Illia Ilin Jun 30 '15 at 08:37TABLE_COLLATIONу таблицы -utf8_general_ci, и консольный вывод в mysqlSELECT * FROM table_nameя получаю такими же кракозябрами. В то же время она прекрасно выводится кириллицей в программе, для которой написана. Загадка неживой природы) – Illia Ilin Jun 30 '15 at 09:00