вставка текста в латинской кодировке в таблицы utf8 (забыл использовать mysql_set_charset) - PullRequest
5 голосов
/ 04 июля 2010

У меня есть веб-приложение PHP с таблицами MySQL, принимающими текст utf8.Я недавно конвертировал данные из latin1 в utf8 вместе с таблицами и столбцами соответственно.Однако я забыл использовать mysql_set_charset, и последние входящие данные, которые, как я полагаю, поступили через соединение MySQL как latin1.Я не знаю, что происходит, когда latin1 входит в столбец utf8, но это вызывает некоторые странные проблемы с отображением таких элементов, как запятая, кавычки, амперсанд и т. Д.

Теперь, когда mysql_set_charset установлен, он вытягиваетданные с прикольными персонажами.Любой способ преобразовать latin1-utf8 суп в прямой utf8 теперь, когда у меня есть ресурс соединения с базой данных, использующий правильный набор символов?

1 Ответ

4 голосов
/ 05 июля 2010

Нашли исправление с вашим комментарием. Вот строка SQL, которая, казалось бы, решила мою проблему.

UPDATE table SET col = CONVERT(CONVERT(CONVERT(col USING latin1) USING binary) using utf8);

Несмотря на то, что столбец имеет формат UTF8, он заставляет его извлекать данные в формате latin1, преобразовывать в двоичный файл, преобразовывать в utf8 и вставлять заново.

...