Кодировка базы mysql
06.07.2008Протолкнув в стек идею про 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 базы
Комментарии (13) на запись “Кодировка базы mysql”
Пингбеки
- Каким должен быть блог клиент? | Программы для блогов
- плагин для wordpress фильтрующий базар | Программы для блогов
- Привет мир! | Программы для блогов
- пирование строки на php в кодировке utf-8 | Программы для блогов
- подписка на rss feed черз rss2email.ru | Программы для блогов
- плагин Wordpress to subscribe.ru - из блога в рассылку | Программы для блогов
- Прошивка для T Sonic 610 или как я починил MP3 плеер | Программы для блогов
- Социальная сеть из блогов на wordpress | Программы для блогов
- ссылка на подписку на rss2email.ru одним кликом | Программы для блогов
- плагин для wordpress создающий новые выпуски вашей рассылки на subscribe.ru и создает новую запись на зеркале blogspot.com | Программы для блогов
- ping, pingback, trackback в wordpress- взгляд изнутри: что это такое и как оно работает | Программы для блогов
- Мифы и реальность интернет протоолов http, ftp, mail | Программы для блогов
- доступ к комментариям по xml-rpc в wordpress: проблемы с преобразовании дат | Программы для блогов
- api социальных сетей и сервисов в интернете | Программы для блогов
- Предложение блог сервисам | Программы для блогов
- Посвящается саппорту | Программы для блогов
- подстановка файлов из каталого другого сайта на одном шаред хостинге | Программы для блогов
- плагин “социальная сеть” для wordpress - дальнейшее проектирование | Программы для блогов
- Красотки чародейки или кросспостинг через неделю | Программы для блогов
- индексирование сайта yandex | Программы для блогов
- проектирование xml rpc интерфейса для плагина социальной сети wordpress | Программы для блогов
- openid - что это такое | Программы для блогов
- Проектирование - самая сложная часть разработки софта | Программы для блогов
- Простой php скрипт для просмотра статистики поисковых запросов | Программы для блогов
- один каталог с файлами wordpress для нескольких блогов | Программы для блогов
- страницы (Page) в wordpress и исключение страницы из списка | Программы для блогов
- новые версии плагинов wordpress для кроспостинга в subscribe.ru, blogger.com, livejournal.com | Программы для блогов
- Анонс выхода клиента для комментариев WordPress | Программы для блогов
- Блог клиент - поддержка загрузки файлов | Программы для блогов
- Поиск хостинга | Программы для блогов
- О вечном - о хостинге | Программы для блогов
- Граф социальной сети блогеров | Программы для блогов
- Граф социальной сети блогеров | Программы для блогов
- Лабиринт Сета | Программы для блогов
- Подписка | Программы для блогов
- Обновление Comment server | Программы для блогов
- Подавление диалоговых окон Word | Программы для блогов
- Windows-7 после висты | Программы для блогов
- Эпидемия спама | Программы для блогов
- Креативный спам | Программы для блогов
- Плагин “Постовой” | Программы для блогов
- Мои фантазии о системе управления сайтом | Программы для блогов
- Оптимизация производительности сервера | Программы для блогов
- Перенос сайта - дубль #2 | Программы для блогов
- Кодировка mysql сервера | Программы для блогов
- И опять поиск VDS | Программы для блогов
- Выбор VDS | Программы для блогов
- Объектно ориентированный подход к построению CMS на PHP | Программы для блогов
- В предвкушении выхода демо версии blogolet | Программы для блогов
- Многопоточность в PHP | Программы для блогов
- Блоголёт: от демо к бетте | Программы для блогов
- Вторая бета версия блоголёта | Программы для блогов
- Переход из WordPress на Блоголёт | Программы для блогов
- Дублирование контента Wordpress’ом | Программы для блогов
- Финальная версия блоголёта | Программы для блогов
- Редактирование меток с категориями и редактируемые виджеты в блоголёте | Программы для блогов
- WiMax - подключать ли интернет | Программы для блогов
- Как разлочить nokia e51 | Программы для блогов
- 5 книг блогеру | Программы для блогов
- График дня для повышения работоспособности | Программы для блогов
- Судьба плагина поисковых фраз | Программы для блогов
Оставить комментарий
Столкнулся с проблемой кодировок в базе данных, но из-за недостаточной технической подкованности не могу воспользоваться вашим советом.
Итак, я делаю дамп базы, а вот это:
$s = str_replace('cp1251', 'utf8', $s);
как потом реализовать?
Все последующие действия выполняются с помощью, например, phpmyadmin, если я правильно понял?