Хотя я настроил свое веб-приложение для полного соответствия UTF8, я забыл указать кодировку UTF-8 в настройках PDO ... Случается, что китайские персонажи выглядят странно в базе данных/phpmyadmin (ä½ å ¥ ½ для 你好), хотя они отлично смотрятся в моем веб-приложении.Исправлена база данных, закодированная через PDO без указания кодировки UTF8
Как я, наконец, знаю решение (чтобы добавить кодировку в настройках соединения PDO), я хотел бы знать, есть ли простой способ преобразования моих старых данных в правильный UTF-8. Я нашел на Stackoverflow следующего кода, который делает работу, но он решает кодирования столбца проблемы на столбец, таблицу на стол ..
UPDATE tablename SET
field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);
она существует ли способ выполнить такое преобразование ко всей базе данных?
Я точно знаю, что мои базы данных MySQL/таблицы уже настроены для использования кодировки UTF-8.
Спасибо!
Прежде всего, давайте посмотрим 'SHOW CREATE TABLE' и' SELECT col, HEX (col) ... 'для некоторого искаженного текста. Это необходимо для того, чтобы определить, является ли это Mojibake или Double Encoding (что более беспорядочно исправлять). См. [_this_] (http://stackoverflow.com/a/38363567/1766831) для обсуждения. –
И, поскольку вы используете китайский язык, вам понадобится utf8mb4, а не только utf8. –
Привет, Рик, большое спасибо за ваши отзывы. Вот результаты, которые я получаю: С SHOW CREATE TABLE у меня есть DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci в конце моей структуры таблицы. И для HEX (col), я получаю длинные строки, начиная с C, что, кажется, для Западной Европы. – Pierre