Попробуйте так (предварительно сделав резервную копию):
ALTER TABLE wp_commentmeta CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_comments CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_links CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_options CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_postmeta CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_termmeta CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_terms CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_term_relationships CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_term_taxonomy CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_usermeta CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE wp_users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
После этого можно указать utf8
в wp-config.php
.
Я делал так, у таблиц меняется сравнение, но иероглифы внутри самой таблицы остаются в полях post_content, post_title и т.д. остаются…
Похоже придется экспортировать и декодировать по частям через notepad++ или(если не получится) через декодеры
иероглифы внутри самой таблицы остаются
А в свойствах базы на вкладке «Операции» какая кодировка? И какую показывает phpMyAdmin на первой странице после входа?
На входе в Основных настройках Сопоставление кодировки соединения с MySQL — utf8_general_ci
Для самой базы данных Сравнение для каждой из таблиц базы и самой базы — cp1251_general_ci
Не уверен точно, но может поможет https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Скрипт умеет обрабатывать отдельные таблицы и по моему есть конвертация в UTF8. Только в его коде наверняка нужно будет поправить исходную кодировку — там явно не 1251.
Сравнение для каждой из таблиц базы и самой базы — cp1251_general_ci
После выполнения запросов ALTER TABLE
в свойствах базы тоже нужно указать utf8_general_ci
.
Хотя да, этот способ больше подходит для случаев, когда данные изначально читаемы и их нужно просто сконвертировать во избежание будущих проблем. Если нечитаемы — я бы тоже делал через дамп и Notepad++ (там нужно после приведения в читаемый вид не забыть везде поменять cp1251
на utf8
).
Модератор
Юрій
(@yube)
Это так называемый P-utf (еще бывает аналогичный D-utf). У WP такое если и было, то лет 10 назад. С vBulletin случалось часто, потому я с этой бедой знаком.
Сомневаюсь, что получится по-простому перегнать через дамп.
Обычно такое лечится «прикладыванием» жуткой «конструкции», типа вот такой
UPDATE post SET title = CONVERT(CONVERT(CONVERT(title USING cp1251) USING binary) USING utf8);
к каждому текстовому полю в каждой таблице.
Также, говорят, может помочь сипекс-дампер с определенным набором установок, но я его на дух не переношу, поэтому точно сказать не могу.
Благодарю за помощь! Решил вопрос следующим образом:
— выкачал дамп базы данных (сделал копию файла на всякий случай)
— открыл файл дампа программой Notepad++
— нашел и заменил весь текст в файле содержащий «cp1251» на «utf8» и сохранил
— скачал программу перекодировщик Recoder v2.1
— скопировал целиком весь текст из файла дампа базы данных и вставил в программу Recoder v2.1
— произвел перекодировку вставленного текста из utf-8 в windows-1251
— скопировал полученный результат, заменил им текст в файле дампа базы данных и сохранил (предварительно убедился, что кодировка файла не изменилась и стоит utf-8 без ВОМ)
— поменял в phpMyAdmin для всей базы данных в разделе Операции в пункте Сравнение cp1251_general_ci на utf8_general_ci
— удалил таблицы текущей базы данных в phpMyAdmin и загрузил обновленный файл дампа базы данных
— в файле wp-config.php указал кодировку utf8 вместо cp1251
Результатом вышеуказанных действий, текущая информация на сайте и в таблицах базы данных стала отображаться правильно без иероглифов, но остался небольшой глюк перекодировки, почему-то при перекодировке вместо буквы в верхнем регистре «Р» отображалось «?_», а в место буквы в верхнем регистре «И» — «??» пришлось воспользоваться плагином Better Search Replace дабы произвести замену в таблицах базы данных этих элементов.