Как преобразовать данные latin1_swedish_ci в utf8_general_ci?

У меня есть база данных MySQL со всеми настройками полей таблицы, так как

latin1_swedish_ci 

У него почти 1000 записей уже сохранены, и теперь я хочу преобразовать все эти данные в

 utf8_general_ci 

Чтобы я мог отображать любой языковой контент. Я уже изменил полевые сопоставления в utf8_general_ci, но это не конвертирует все старые записи в utf8_general_ci

Используйте это, чтобы преобразовать существующую базу данных MySQL из одной кодировки кодировки в другую

 ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

Преобразование существующей таблицы из одной кодировки кодировки в другую

 ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

CONVERT() преобразует данные между разными наборами символов. Проверьте это для справки

одна забавная вещь.

CONVERT TO CHARSET и CONVERT () / CAST (), предложенные Anshu, будут работать нормально, если кодировка в таблице находится в правильной кодировке.

Если по какой-то причине столбец latin1 содержит текст utf8, CONVERT () и CAST () не смогут помочь. Я «перепутал» мою базу данных с этой установкой, поэтому потратьте немного времени на решение этой проблемы.

чтобы исправить это в дополнение к преобразованию набора символов, необходимо выполнить несколько упражнений.

  1. «Жесткий» – это воссоздание базы данных из дампа, которая будет преобразована через консоль
  2. «Простой» – преобразование строки за строкой или таблицы по таблице:
 INSERT INTO UTF8_TABLE (UTF8_FIELD) SELECT convert(cast(convert(LATIN1_FIELD using latin1) as binary) using utf8) FROM LATIN1_TABLE; 

в основном, оба случая будут обрабатывать строку исходным символам, а затем – правую кодировку, что не будет происходить с simple convert(field using encoding) from table; команда.