Проблема с кодировкой символов после смены серверов

5 мар. 2011 г., 18:38:06
Просмотры: 29.1K
Голосов: 5

Недавно я перенес свой сайт на WordPress с VPS DreamHost на VPS Linode, работающий на Debian + LEMP. После запуска сайта я заметил множество ошибочных символов в постах; такие символы как " и - были заменены на нечитаемые знаки.

После некоторого исследования стало ясно, что проблема была связана с кодировкой символов.

Я нашел руководство, в котором предлагалось отредактировать wp-config.php и закомментировать следующие строки:

define('DB_CHARSET', 'utf8'); и define('DB_COLLATE', '');

Я сделал это, и проблема была решена, но я задаюсь вопросом, был ли это лучший способ решения. Спасибо за любой совет.

1
Комментарии

Возможно, я ошибаюсь, но когда у меня была такая же проблема при переносе серверов, она была связана с сохранением файла в формате ASCII вместо UTF.

Bainternet Bainternet
5 мар. 2011 г. 18:41:06
Все ответы на вопрос 4
2

После целого дня работы над этим я наконец нашел руководство, которое сработало идеально:

До этого я пытался следовать информации от @Rarst, пробовал экспортировать базу данных и вручную очищать её, пробовал плагин UTF-8 Sanitize с модифицированной версией отсюда http://www.prelovac.com/vladimir/ultimate-solution-to-weird-utf-character-encoding-problem (который, кстати, работал довольно хорошо, но не исправил все символы. И, вероятно, это была ужасная идея).

В любом случае, если кто-то из вас столкнется с этой проблемой, посмотрите первую ссылку, которую я указал. Процедура была довольно простой и сводилась к замене SET NAMES latin1 на SET NAMES utf8 после экспорта базы данных, а затем к импорту новой очищенной базы данных явно как UTF8.

6 мар. 2011 г. 01:17:48
Комментарии

Плагин UTF8 Sanitize работает у меня (хотя плагин довольно старый - не обновлялся 2 года, как указано в этом комментарии https://wordpress.org/plugins/wp-utf8-sanitize/), исправляя неочищенный дамп базы данных.

artlung artlung
4 сент. 2014 г. 00:05:17

первая ссылка нерабочая

Duck Duck
1 апр. 2017 г. 20:58:34
4

Вот еще одно решение, которое сработало у меня...

Просто закомментируйте DB_CHARSET и DB_COLLATE в файле wp-config.php

//define('DB_CHARSET', 'utf8');

//define('DB_COLLATE', '');
9 нояб. 2014 г. 14:41:02
Комментарии

Пожалуйста, объясните, почему это поможет.

kaiser kaiser
9 нояб. 2014 г. 15:08:23

Как это "другое решение"? То же самое уже было отмечено в вопросе; он попробовал закомментировать эти две строки в wp-config.php, и это сработало, но он хотел узнать, есть ли лучшее решение. Ваш ответ ничего не добавляет.

Gabriel Gabriel
9 нояб. 2014 г. 15:28:37

Извините, я не до конца прочитал вопрос... моя ошибка

Sabeer Sabeer
10 нояб. 2014 г. 06:42:12

Работает идеально !!!

Mike Nguyen Mike Nguyen
4 янв. 2017 г. 14:21:49
1

См. Преобразование кодировок базы данных в Кодексе. В статье есть примечание о том, что она была полностью переписана для версии 3.0.1, поэтому информация должна быть актуальной.

5 мар. 2011 г. 19:34:19
Комментарии

Спасибо за ответ, Rarst. Это было немного более радикально, чем мне требовалось. В итоге мне просто нужно было заменить экземпляр SET NAMES latin1 на SET NAMES utf8 и явно переимпортировать базу данных как UTF8.

Evan Wondrasek Evan Wondrasek
6 мар. 2011 г. 01:18:39
0

Я перенес файлы своего сайта из старой директории в новую и смог изменить:

define('DB_CHARSET', 'utf8mb4');

на

define('DB_CHARSET', 'utf8');

И это решило проблему с черными ромбами вместо пробелов.

3 янв. 2016 г. 22:15:21