Как быстро настроить кодировку базы данных для WordPress’а

Рубрика: WordPress -> Статьи
Пятница, 23 ноября 2007 г.
Просмотров: 4288
Подписаться на комментарии по RSS
]]>
]]>

Для этого существует довольно простой и эффективный способ. Делать это лучше перед установкой WordPress'а.

Итак вы создали базу данных (или это произошло автоматически). Но не спешите устанавливать WordPress - вместо этого откройте phpMyAdmin (он должен быть у каждого порядочного хостера).

Дальше вам нужно выбрать базу данных и если таблиц еще не создано, то появится сообщение «Таблиц в базе данных не обнаружено». Если же таблицы в базе уже есть, то вы увидите их список и сразу же обратите внимание на самую нижнуюю строчку «Таблиц всего:» и «Сравнение». Если вы видите, что-то отличное от «utf8_general_ci» (или если таблиц нет), то переходим на закладку «Операции».

Внизу вы увидите выпадающий список «Сравнение», где нужно выбрать «utf8_general_ci». После этого жмем «ОК».

Теперь все новые таблицы в этой базе данных по-умолчанию (без указанного db_collate) буду создаваться в «utf8_general_ci», что собственно и нужно. Теперь, если какой-то плагин будет создавать свою таблицу, она автоматически будет создаваться в нужной кодировке.

Некоторые предостережения. Теоретически никакие негативные последствия данная операция на уже существующие таблицы не оказывает. Происходит это из-за того, что начиная с MySQL 4.1 каждая таблица и каждое поле таблицы имеют свою кодировку сравнения. Поэтому изменяя кодировку базы, вы лишь меняете кодировку по-умолчанию, не затрагивая уже существующие. Но вообще данный совет подойдет прежде всего тем, кто устанавливает WordPress с нуля. Для остальных это не так актуально, но если всё-таки решите выполнить данную операцию, то нелишним будет сделать бэкап базы.

]]>twitter.com Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

Комментариев: 30

Вы можете получать новые комментарии к этой записи по RSS или оформить подписку на все комментарии сайта. Или даже на все новые записи сайта. Не знаете, как это сделать?
  1. 2007-11-23 в 10:29:54 | iSynth

    Максим, а не трудно вам будет написать про то, как правильно бэкапить базу данных вордпресса и плагинов через Экспорт phpMyAdmin? там всегда столько разных опций, поэтому что было бы универсальным средством выбора?

    заранее спасибо!

  2. 2007-11-23 в 12:20:20 | Maksus

    Спасибо, Макс, так и делал раньше ))

  3. 2007-11-23 в 12:52:38 | Dimox

    Поддерживаю iSynth. Думаю, что данный вопрос интересен многим пользователям.

  4. 2007-11-23 в 14:07:28 | DunKan

    и я так раньше делал и писал в одном из комментов об этом...

    НО есть, имхо, еще один нюанс. Как-то компания Агава решила перенести мой хост на другой сервер, непредупредив, кстати говоря, в процессе переноса кодировка сбилась.

  5. 2007-11-23 в 14:43:23 | Максим

    Да от кривык рук хостера никто не защищен. Совсем свежий пример с мастерхостом. Такое впечатление, что там одни дауны работают. Вчера меняли опять свою MySQL. Так базы, где явно указана utf-8 эти идиоты взяли и прописали как cp1251. :eek: Естественно, что все тексы оказались испорчены... :evil:

  6. 2007-11-23 в 16:42:59 | Crash

    Еще пример - у меня один из блогов работает на "странной" базе. Везде указано, что кодировка каждой таблицы utf-8, а в самом низу, как бы под общей чертой уже cp1251 стоит!

  7. 2007-11-23 в 19:39:50 | Максим

    Блин, откуда в мастерхосте берут админов? Объявляют конкурс даунов? Вот изменили базу - кодировку должна быть utf-8, они сделали cp1251. Ежику понятно, что нужно взять старый бэкап и из него восстановить базу в нормальной кодировке. Что делают эти идиоты? Они берут прописывают в wp-settings.php тупо в самый конец mysql_query("SET NAMES cp1251"); :eek: Нет слов, одни маты...

  8. 2007-11-23 в 22:33:00 | Александр М.
    Нет слов, одни маты...

    А чего Вы так возмущаетесь, Максим? Мне они за 2 недели письмо прислали. Предупредили о модернизации и дали ссылку на текст, где указаны расхождения и особенности, которые могут возникнуть. Я на следующий, после переноса день, просто в wp-config.php Wordpressa переписал две строчки вот так:

    define('DB_CHARSET', 'cp1251'); # кодировка базы данных: utf8 или cp1251
    define('DB_COLLATE', 'cp1251_general_ci'); # кодировка, в которой хранятся данные: utf8_general_ci или cp1251_general_ci

    И все. Никаких проблем.

  9. 2007-11-23 в 22:41:03 | Максим

    Я вам объясню в чем проблема.

    В базе данных тексты сохранились в utf-8. Для таблиц была указана именно эта кодировка. Все работает замечательно. Теперь эти умники ставят кодировку cp1251, но тексты, как и прежде хранятся в utf-8. То есть уже явное расхождение. В конце-концов загляните в phpMyAdmin и убедитесь, что тексты у вас нечитабельны.

  10. 2007-11-23 в 23:02:01 | Александр М.

    Я прекрасно понимаю, что у меня, например, сейчас происходит двойная перекодировка. И, если честно, собирался им написать письмо с вопросм: не увеличивает ли это нагрузку и можно ли отключить их перекодировку, для того, что я отключил в свою в скрипте.

    Но я не об этом. А о том, как Вы пишите: "дауны" и "тексты испорчены".

    Понятно, что все "Ваши" Вордпрессовцы, которые на Мастерхосте (и я в том числе), оказались в ситуации: utf8 -> cp1251 -> cp1251 -> utf8. Вместо того, чтобы сразу из скрипта в базу: utf8 -> utf8 grin

    Ну хотите, напишите им сами письмо. Можно это безобразие убрать или нет? Чего раздражаться-то? У них же не только я и Вы wink

    Успехов Вам и благоразумия.

  11. 2007-11-23 в 23:36:21 | Максим

    Понимаете, Александр, все дело в том, что хостинг, который позиционирует себя как чуть ли не лучший в рунете, не может нанять квалифицированный персонал. Вот вы согласны с тем, что вам испортили базу. А не приходит ли вам в голову, что это может аукнуться в будущем. Вот вы добавите одну запись и половина текста окажется в одной кодировке, а другая в другой. Потом, когда вы будете делать бэкап, вы просто не сможете нормально восстановить свои тексты. Или как в таком случае будет работать сортировка, поиск? И обратите внимание, что речь не идет от чем-то экстраординарном: все эти проблемы возникли из-за непродуманности действий админов. Или, что скорее всего, их крайне низкой квалификации.

  12. 2007-11-23 в 23:38:45 | Александр М.
    ставят кодировку cp1251

    Внесу поправочку (хотя, может Вы именно это и имели ввиду): ставят не "кодировку", а "перекодировку".

    Подробности от Мастерхост-а: "Переход на PHP5+MySQL5"

  13. 2007-11-23 в 23:50:51 | Александр М.
    Вот вы согласны с тем, что вам испортили базу.
    Это Вы сказали. Я так не считаю. Тексты сохранились, поиск работает. Новые публикации и комментарии функционируют как и прежде. И все это из-за двойного перекодирования. Т.е. мои тексты и комментарии так и продолжают извлекаться как utf8, так и сохраняться в базе в кодировке utf8.

    Не вижу смысла далее обсуждать квалификацию персонала Мастерхост-а. И у меня нет цели переубеждать Вас.

    Просто мне казалось, что Вы спосбны смотреть на проблемы объективно, а не эмоционально.

    Успехов Вам.

  14. 2007-11-23 в 23:54:32 | iSynth

    отличная дискуссия, заставившая еще раз проверить настройки на "своем" хосте!

    вот что предстало взгляду:

    localhost

    Версия сервера: 5.0.27-standard

    Версия протокола: 10

    Сервер: Localhost via UNIX socket

    Пользователь: isynth@localhost

    MySQL-кодировка: UTF-8 Unicode (utf8)

    Сопоставление соединения с MySQL:

    utf8_unicode_ci

    в базах данных:

    База данных Сравнение

    my_database cp1251_general_ci

    подскажите, все ли правильно?

  15. 2007-11-24 в 00:26:51 | Максим

    Ну я тоже особо и не горю желанием кого-то убеждать. В конце концов, если вас устраивает такая ситуация, то вы и пользуетесь таким хостингом и платите за него своими деньгами. Я правда так и не понял, что такое «двойное перекодирования» и если у вас используется приведенная схема, то как вообще тексты могут быть корректными? Мой опыт подсказывает, что не всё благополучно в вашей базе. Ну тут уж вам решать...

    В копилку некомпетентности админов мастерхоста я могу добавить еще и попытку прописать вызов SET NAMES cp1251 в wp-settings.php. Я понимаю, что они в WordPress'е ничего не соображают, но почему бы тогда не обратиться к файлу wp-config.php? То есть вместо того, чтобы по нормальному исправить базу, админ лезет в первый попавшийся файл и прописывает строчку из своего фака.

    Теперь опишу ситуацию для простого клиента, который вообще в этом ничего не смыслит. Прежде всего следует отметить, что данный запрос уже используется в WordPress, но вот только в кодировке блога (utf-8). Поэтому часть запросов может отдаваться в нормальном виде (например тексты), а вот остальные, например опции, уже в покоцанной. Клиент, ничего не зная, что мастерхост самостоятельно и без его ведома исправил какие-то файлы «движка», естественно пишет в службу поддержки и получает ответ, типа того, что у нас все нормально, эта ошибка в ваших скриптах и посылает по приведенной вами ссылке (я её убил). :mrgreen:

    2iSynth:

    Да именно об этом я и пишу. Нужно поменять кодировку базы на utf8_general_ci

  16. 2007-11-24 в 00:39:31 | Александр М.

    Максим... про убранную ссылку у меня просто нет слов. Не ужели Вы решили, что FAQ - это реклама? :smile:

  17. 2007-11-24 в 00:42:25 | Lecactus

    еще раз убедился что хостинги зло. на самом деле чем думаю админы того же мастерхоста...почему я у себя на сервере могу создать любую базу с любой кодировкой и все работает нормально, хотя также использую " PHP5+MySQL5". Кстати я вроде уже писал, но повторю что когда в одной базе там пытался сменить кодировку на утф8 и обратно на 1251 реально ничего вообщене происходило с данными. они всегда на самом деле были в кодировке 1251 независимо от того что было в wp-config и показывалось в collate в phpmyadmin. заливал базу из дампа, сохраненного в обоих кодировках но при заливке утф-8 получались небольшие глюки

  18. 2007-11-24 в 16:51:17 | sonika

    Я на новой инсталации WP всегда плагином UTF-8 Database Converter по базе «прохожусь». Я тут его уже один раз рекламировала smile Очень мне нравится простотой и удобством. Кнопка нажал — и готово.

    Александр М.

    Странно, как это у Вас поиск корректно работает :/ И вообще, что Вы мастерхост так рьяно защищаете? Работаете там что ли?

  19. 2007-11-25 в 00:05:31 | Александр М.
    И вообще, что Вы мастерхост так рьяно защищаете?
    Вообще?

    Хоть я и не защищаю, а пытаюсь понять причину столь бурного негодования Максима, но в любом случае: надеюсь Вы не считаете возможным запретить высказать мне мою личную точку зрения и также надеюсь, Вы не против того что мне интересно понять объективную причину таких горячих эпитетов?

    Работаете там что ли?
    Не там а с ними.

  20. 2007-11-25 в 02:53:03 | sonika

    Александр М.,

    так разве кто запрещает высказываться? Где я что такого сказала, что Вы углядели столько грозные намерения в моих словах? smile

    Когда с чем-нибудь намаешься зазря или не по своей вине, вот тогда обычно и появляется бурное негодование.

    В общем, блажен не ведающий smile

  21. 2007-12-03 в 16:02:22 | Алекс

    что то я из комментариев выше не понял, так все таки должна быть utf8_unicode_ci или utf8_general_ci?

  22. 2007-12-03 в 16:39:43 | Максим

    utf8_general_ci

  23. 2007-12-03 в 16:42:03 | Алекс

    да, уже понял, спасибо.

    вот еще может кому интересно будет:

    http://codex.wordpress.org/Converting_Database_Character_Sets

  24. 2008-02-23 в 21:26:58 | Петров Николай

    Спасибо Макс!

    Кодировка в ВП - больная тема и уже долго приходится с этим иметь дело. Спасибо что публикуешь актуальные новые материалы по этой теме.

    Чисто теоретически - возомжно написать SQL команду, которая автоматизировала-бы этот процесс смены кодировки?

  25. 2008-02-24 в 18:09:38 | sonika

    Петров Николай, этот плагин не подойдет?

  26. 2008-02-24 в 20:53:53 | Петров Николай

    Спасибо sonika за наводку!

    To Максим: насчет кодировки - у меня на американском хостинге (dreamhost) по умолчанию стоит английский ВП, и выполнение инструкций, написанных в этой статье не приводит к желаемому результату. Однако скачанная оригинальная версия wordpress-russia.org + описанные выше инструкции наконец-таки дали свои плоды.

    Да, и спасибо за информацию о том что нужна именно general а не unicode, долго не мог понять какую лучше использовать.

  27. 2008-03-09 в 16:49:02 | elsik

    у меня установлен utf wordpress на 1251 хостинг. подскажите, как перевести его тоже в 1251, включая таблицы ?

  28. 2008-05-09 в 23:35:32 | 35metod

    меня мой хостер так же поставил в ситуацию (( там аж 2 блога на ВП

    даже не могу теперь зайти в админ панель - дата бейс конвертер только из админки ж можно запустить видимо ? он переконвертит из cp1251_general_ci в utf полностью внутри все таблицы ?

    wp-config пробовал менять по разному, ничего не помогает, когда текст становится читаемым, но названия разделов блога всё равно нечитаемые

  29. 2009-01-18 в 13:56:09 | максим

    что то не могу кодировку сменить, прописываю как сказал, но при просмотре сайта опять нужно менять кодировку

  30. 2009-01-26 в 13:57:03 | Аноним

    Друзья, сама промучилась с этими кодировками, перечитала кучу всяких статей, сообщений на форумах и т.п. Как я понимаю, кракозябры при переносе ооочень распространенная проблема! Можно конечно чахнуть над базами данных не один день, править их, отправлять sql запросы и т.п. Но все гениальное действительно просто) Все, что вам нужно сделать, чтобы решить все проблемы - это перенести все файлы на новый хостинг, создать абсолютно новую базу данных, установить за 5 мин вордпресс 2.7 иии... там есть замечательная функция в разделе "инструменты" импорт данных (конечно же вам надо будет сделать перед этим экспорт со старого сайта, но там уже все понятно! главное, чтобы как на старом, так и на новом сайте стояли самые последние версии вордпресс! полный автомат) и тогда у вас все аккуратненько так перетащится без кракозябр и прочих чудовищ на нове место)) ура!

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)