У меня есть строки (английские слова + иностранное слово + emojis), хранящиеся в БД Mysql.
Данные загружаются
charset = 'latin1'
Затем я предварительно обрабатываю данные с помощью
str = str.encode('latin-1').decode('utf-8')
После этого все выглядит хорошо, за исключением символов Unicode, которые выглядят как \u '******'
Буду признателен за любую помощь.
Не используйте кодировку/декодирование, это только добавляет к вашим бедам.
Ваше описание не ясное на пути, предпринятом для Эмодзи. Правильно ли они были закодированы в UTF-8, но затем искажены, когда они хранятся в столбце latin1 в таблице?
Или это было что-то еще?
См. "Лучшая практика" в проблеме с символами UTF-8; я не вижу того, что я хранил
Если ошибочно храниться в столбце latin1, см. "CHARACTER SET latin1", но в нем есть utf8 байт, оставьте байты в одиночку при исправлении кодировки "в http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases
print
в терминал, запись в файл или что-то еще)..encode('latin-1').decode('utf-8')
- это не то, что вам нужно делать в обычном режиме, но это типичный.encode('latin-1').decode('utf-8')
для восстановления после ошибочного кодирования с предыдущего шага.