Протолкнув в стек идею про narod.ru затронутую в blogclient.ru/tic-ot-narodru.htm я хотел бы поделиться приключениями с кодировкой базы mysql

Я долгое время вообще никак не заморачивался с кодировками баз mysql: все и так работало как мне надо, а как известно лучшее враг хорошему. Я что то где то читал про проблемы с кодировками, но у меня этих проблем не возникало: я писал и читал текст в кодировке utf-8 и не знал горя, думая, что у меня все в порядке. Иногда просматривая дамп базы я не обращал внимание на русские тексты в кодировки utf-8 что можно было бы озвучить как рёрёрёрё - ну не буду же я прямо здесь вставлять для примера текст в кодировки utf-8 Занявшись вплотную wordpress я обратил внимание, что дамп базы получается на нормальном русском в кодировке windows-1251 Ну я подумал что WordPress дурак и совсем ничего не понимает в кодировках, ведь если будут тексты на разных языках то он должен бы рухнуть. Святая наивность. Как то мне пришлось туда сюда гонять мой дамп с рёрёрё, к тому же использовал текстовый редактор. Итог - в нескольких местах я потерял часть текста. Только тогда я решил выяснить, в чем причина сих проблем. Выяснил. У WordPress как раз таки все в порядке с кодировками, а бардак был в моих базах.

Итак, формулировка проблемы: текст в базе читается и пишется в кодировке utf8, а в дампе указана windows-1251 (если точнее cp1251, что эквивалентно). Формально вроде как все работает, но следует привести все к одному знаменателю - читать и писать, а также хранить все следует в одной кодировке. Ну конечно как практически единственно правильную следует выбрать utf8 без вариантов, ибо о других где то в на нашей планете еще могут и не знать. Почитав доки, выяснилось, что неправильная кодировка ведет к неверной сортировки и поиску в базе.

Наконец таки решение проблемы или как преобразовать кодировку базы без потерь. Я нашел несколько способов, все они по разному хороши, но мне понравился только один, этим способом я успешно и воспользовался Отысканный мой способ банален и невероятно прост. Сохраняется дамп, потом в дампе меняется текст, который указывает кодировку таблиц, то бишь на php это будет как

$s = str_replace('cp1251', 'utf8', $s);

для такой замены не рекомендую пользоваться текстовым редактором, ибо он может повредить текст. Далее восстановить базу из дампа добавив в команду mysql еще один параметр --default-character-set=utf8 Также еще необходимо выполнить запрос alter database <code>dbname character set utf8; и после каждого соединения к базе делать запрос SET NAMES utf8

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

Мой блог находят по следующим фразам
секретный email в blogspot
отсроченный кросс-пост
скачать ворд бесплатно
скачать на мобильный игру чародейки бесплатно
рейтинг постов в blogspot
сменить кодировку mysql базы