Я импортировал некоторые данные, используя LOAD DATA INFILE, в базу данных MySQL. Сама таблица и столбцы используют набор символов UTF8, но набор символов по умолчанию для базы данных — latin 1. Поскольку тип символов по умолчанию для базы данных — latin1, и я использовал LOAD DATA INFILE без указания набора символов, он интерпретировал файл как latin1, хотя данные в файле были в кодировке UTF8. Теперь у меня есть куча плохо закодированных данных в моем столбце UTF8. Я нашел эту статью, которая кажется для решения аналогичной проблемы, которая заключается в том, что «UTF8 вставлен в cp1251», но моя проблема заключается в том, что «Latin1 вставлен в UTF8». Я пытался редактировать запросы, чтобы преобразовать данные latin1 в UTF8, но не могу заставить его работать. Либо данные выходят такими же, либо еще более искаженными, чем раньше. Например, слово Квебек отображается как Квебек.
[ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ]
При выборе данных, заключенных в HEX(), Квебек имеет значение 5175C383C2A9626563.
Таблица создания (сокращенная) этой таблицы.
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;
SELECT HEX(name) FROM cities LIMIT 5
. с этой информацией я могу помочь вам найти правильный способ исправить это в соответствии с этой статьей. (Кстати: мне нравится эта статья! Она несколько раз спасала мою задницу.) - person longneck   schedule 17.09.2009