Проблема UTF8 с MySQL 5
-
19-08-2019 - |
Вопрос
Я переношу свой блог WordPress и форум phpBB на новый хостинг-сервер.Я использую phpMyAdmin для импорта сценария SQL из базы данных на предыдущем сайте.
Когда я открываю сценарий .sql с помощью Кейт, он говорит, что в качестве кодировки использует UTF8.Когда я импортирую sql на новый сервер, в phpMyAdmin у меня есть возможность выбрать кодировку, где по умолчанию выбирается utf8.
Тем не менее, когда я заканчиваю импортировать базу данных, я читаю текст сообщений прямо в phpMyAdmin и вижу такие символы, как «é», «ñ» и т. д.которые не были «интерпретированы» и заменены странными символами.
Я вижу, что моя установка WordPress тоже не работает.Видимо, есть проблема с этой кодировкой, но я думаю, что проблема в базе данных MySQL или phpMyAdmin, а не в WordPress.
Версии MySQL практически такие же, MySQL 5, но другой ревизии.Кроме того, при переносе базы данных форума проблем не возникло, так что это еще более странно...
Я теряюсь, как это исправить...Любые идеи приветствуются.
Решение
Вы пробовали добавить
SET NAMES 'utf8';
в ваш дамп sql?
Проблема с utf8 или кодировками в целом заключается в том, что для достижения успеха вы должны убедиться, что:
- файл в кодировке utf8 без подписи
- кодировка сервера MySQL по умолчанию установлена на utf8.
- соединение - utf8 (поэтому вы помещаете SET NAMES 'utf8' в свой sql-файл).
- все таблицы и столбцы имеют правильную кодировку и кодировку
- все ваши веб-файлы также должны быть в кодировке utf8.И просто добавить правильный заголовок не получится.Приходится открывать файл, проверять кодировка utf8, если нет, то все вырезать, менять кодировку на utf8 и вставлять все обратно.Не получится, если просто сменить кодировку и сохранить файл!
Другие советы
Большое спасибо за ваши ответы. Я нашел решение, и я чувствую себя действительно глупым, чтобы не понять это раньше Все должно было работать нормально:
-файл был закодирован с помощью utf8 Таблицы были объявлены с utf8:
SET character_set_client = utf8;
MySQL сервер был настроен с utf8
И т.д. <р>
Во-первых, я не осознавал, что использую резервную копию базы данных из мастера резервного копирования cPanel. Как только я понял это, я использовал phpMyAdmin на старом сервере, чтобы экспортировать базу данных, импортировал ее на новый сервер, и, прежде всего, проблема была исправлена. Р>
phpMyAdmin понимает phpMyAdmin лучше, чем cPanel: P Очевидно, cPanel экспортирует скрипт для его импорта с помощью самого cPanel. Скорее всего, это бы сработало, но я доверяю phpMyAdmin лучше.
Большое спасибо за ваши ответы.
Я только что столкнулся с той же проблемой, так как я боролся с ней около часа, и это сломало многие из моих сайтов, я решил, что посмотрю и посмотрю, если кто-то еще борется с этим, и опубликую решение: Решение довольно просто указать импортный набор символов при импорте.
Если у вас есть SSH-доступ к вашему хосту, сначала снова удалите все таблицы в новую базу данных, затем выполните эту команду в сеансе SSH (при условии, что ваш старый файл дампа olddatabase.dump.sql ): р>
$ mysql -h хост -u имя пользователя -p пароль --default-character-set = utf8 база данных < olddatabase.dump.sql (замените хост, имя пользователя, пароль и базу данных соответствующими значениями)
Это самый простой и простой способ решения проблемы.