MySQL и русская кодировка WINDOWS-1251
При восстановлении бекапа mysql все русские символы меняются на '?'
1. Убедитесь, что сопоставление кодировки для уже созданной БД по-умолчанию - cp1251.
Посмотреть/исправить это можно через phpyadmin, или в файле /var/db/mysql/имябазы/db.opt
2. Настройте mysql на принудительный выбор кодировки cp1251.
В /etc/my.cnf внестите следующие строки:
[client]
default-character-set=cp1251
[mysqld]
default-character-set=cp1251
default-collation=cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake
После этого перезапустите сервер MySQL
# /usr/local/etc/rc.d/mysql-server restart
или просто перезагрузите VDS
# reboot
Этого достаточно, чтоб MySQL работал с windows 1251 кодировкой по умолчанию.
После этого заливайте дампы - ????? не будет.
P.S. Если же при импорте базы данных вместо русских букв выдаются иероглифы или знаки вопроса,
это значит что дамп был сделан в кодировке отличной от cp1251.
Переделайте дамп в cp1251 или перекодируйте его в нужную кодировку
с помощью утилит iconv или recode.
Забыл пароль root на mysql, как его сменить?
/usr/local/etc/rc.d/mysql-server stop
mysqld_safe '''--skip-grant-tables''' &
mysql
USE mysql;
UPDATE user SET Password=PASSWORD( 'новый_пароль' ) WHERE User='root';
FLUSH PRIVILEGES;
quit;
killall mysqld
/usr/local/etc/rc.d/mysql-server start
- Если у вас включен мониторинг сервиса mysql, то между 1 и 2 шагом не мешкаем, а то ispmgr поднимет его сам. В этом случае повторяем с п.1.
- Не забываем прописать новый пароль в /usr/local/ispmgr/etc/ispmgr.conf, после чего перезапускаем ISPmanager - killall ispmgr
[Изменено 9.9.2006 от slik]
Сделал все, как написано в инструкции. Вставляю записи РНР-скриптом: вставляются знаки вопроса.
Что делать?
Проверить кодировки базы, таблиц, сервера.
Все это корректно. Когда заливаю дамп, все хорошо. Когда вставляю скриптом, кодировка съезжает.
где ваш скрипт?
какие данные вставляете?
мы, к сожалению (а некоторые и к счастью), телепатическими способностями не обладаем.
Обсуждение с суппортом проблемы перенесли в аську. Проблема пока не решена. О причинах и решении напишу здесь позднее.
Привет пипл. Была такая же проблема, решение нашлось довольно таки быстро. Итак
1) В файле бд исправляем всю кодировку на utf8(пишется именно так без дефиса), заменяем то есть все DEFAULT CHARSET=cp1251 на DEFAULT CHARSET=utf8
2)переносим бд с коллэйшеном на utf8_general_ci
3)после каждого запроса на коннект к бд, то есть после mysql_connect() сразу прописываем mysql_query("SET NAMES cp1251");
mysql_query("COLLATE 'utf8'")
т.е например строка с коннектом выглядела так:
.....$this->conn = mysql_connect($this->server,$this->user);
после выглядит так:
$this->conn = mysql_connect($this->server,$this->user); mysql_query("SET NAMES cp1251"); mysql_query("COLLATE
'utf8'
");
Если всё сделаете правельно 100% будет работать. Удачи
________________
YoSite TeaM
[Изменено 27.8.2006 от YoSite]