У меня есть большая таблица MySQL, заполненная китайскими символами в неправильной кодировке. Я считаю, что они должны были быть закодированы в latin1 (iso-8859-1), но я просто не могу найти способ получить китайские символы из содержимого строк базы данных.Преобразование неправильно закодированных китайских символов в MySQL в UTF-8
Преобразование между latin1 и utf8 не помогает - поля остаются неизменными. Я пробовал повторно импортировать базу данных с различными кодировками - всегда одни и те же результаты.
Некоторые примеры текущего содержания и что они должны быть:
惨事
должен быть惨事
ä
¸ должно быть不
最
должен быть最
Я также попытался использовать Python, чтобы попытаться «декодировать» содержимое, но снова безуспешно. Я пробовал различные комбинации:
databasefield.decode('iso-8859-1').encode('utf8')
Но я тоже не могу работать.
Извините, что задал такой неопределенный вопрос, но я просто не знаю, как продолжать пытаться понять это!
Кто-нибудь знает, в чем проблема?
Ваш * первый * пример имеет дополнительные символы * между * latin1 байтами, которые составляют UTF-8 для двух правильных глифов. 'u '惨 事' .encode ('utf8'). decode ('latin1')' приводит к 'æ¨äº' .. –
Ах, некоторые байты не подлежат печати, поэтому' u '\ xe6 \ x83 \ xa8 \ xe4 \ xba \ x8b'' - это результат, и вместо этого он выглядит как кодовая страница Windows. Думаю, я нашел ваше решение, позвольте мне проверить. –
Вы можете указать нам * представление * этих значений. Что дает 'repr (база данных)' дает вам для каждого из них? Возможно, мы смотрим на то, что ваша кодовая страница Windows думает, что байты, например. –