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

Главные вкладки

Аватар пользователя jerboa7 jerboa7 25 ноября 2007 в 21:20

Помогите настроить кодировку в локале дабы спасти мой умерший сайт, видимый как корявость.
MySQL 4.1, настройки my.ini: default-character-set=utf8.

character set client utf8
character set connection utf8
character set database utf8
character set results utf8
character set server utf8
character set system utf8
character sets dir C:\Program Files\MySQL\MySQL Server 4.1\share\charsets/
collation connection utf8_unicode_ci
(Глобальное значение) utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci

Php 5
default_charset utf8
mbstring.detect_order auto auto
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding utf8 utf8
mbstring.language Russian Russian
mbstring.substitute_character no value no value

Дамп базы данных

DROP TABLE IF EXISTS `access`;
CREATE TABLE `access` (
`aid` tinyint(10) NOT NULL auto_increment,
`mask` varchar(255) NOT NULL default '',
`type` varchar(255) NOT NULL default '',
`status` tinyint(2) NOT NULL default '0',
PRIMARY KEY (`aid`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

База данных создана в кодировке utf8_general_ci.
Что делаю не так?
Спасибо.
з.ы. Вставка заклинаний в .htaccess не помогла.

Комментарии

Аватар пользователя UrbanRider UrbanRider 25 ноября 2007 в 23:18

а я не пойму зачем эксперементировать, когда utf-8 расширена и имеет больше символов чем кодировки win-cp-1251

Ребята за юникодом будущее Smile

Аватар пользователя 4matic 4matic 26 ноября 2007 в 0:48

Если SHOW CREATE TABLE показывает какую-то дефолтную кодировку, то это не факт, что там лежит информация в этой кодировке. Если я правильно понял, то кодировка у тебя cp1251. ТАК? Тогда тебе нужно переконвертировать все таблицы из cp1251 в юникод и забыть за cp1251. Единственное, убедись, что у тебя не latin1.

Аватар пользователя Ne01eX Ne01eX 26 ноября 2007 в 9:16

Видимо проблема в том, что при импорте дампа в базу данных не указывается кодировка, в которой закодирован дамп.

Если есть доступ к шеллу предлагаю сделать так:

mysql -u юзер -p -D имя_бд --default-character-set=utf8 < бекап.sql

вводим пароль.

ЗЫ. Естественно, что все старые записи в базе надо предварительно удалить.

Аватар пользователя Ne01eX Ne01eX 26 ноября 2007 в 9:26

ай-яй-яй... не заметил что сервант вендовый... В принципе, если маздай поддерживает конкатенацию ввода-вывода, то данный метод должен работать и в нем.

Аватар пользователя 4matic 4matic 26 ноября 2007 в 21:50

Браузер не имеет никакого отношения к клиенту СУБД. Потому что клиент СУБД работает на сервере, а браузер - на клиенте

Аватар пользователя jerboa7 jerboa7 26 ноября 2007 в 14:39

mysql -u юзер -p -D имя_бд --default-character-set=utf8 < бекап.sql

Сработало!
Спасибо!!! а то я уже порядком пропсиховывала - два года работы коту под хвост.

Аватар пользователя jerboa7 jerboa7 27 ноября 2007 в 15:39

Изначально заливался через shell без указания дефолтной кодировки.
Возник дамп, когда у меня все на площадке скукожилось из-за перехода на MySQL 5 и PHP 5.
Пришлось просить у хосткомпании доапгрейдный дамп и заливать его в локале.

Аватар пользователя Ne01eX Ne01eX 19 декабря 2007 в 9:33

>>Сработало!
>>Спасибо!!! а то я уже порядком пропсиховывала - два года работы коту под хвост.

Пожалуйста! Понимаю состояние, когда-то сам психовал заливая бекап расположенный на сервере, через ssh и удивлялся почему у меня на месте контента какие-то кракозябры. Потом выяснилось что на сервере вообще кодировка по умолчанию какая-то iso***** и то, какая кодировка у меня установлена, сервер это мало волнует. Dirol
После этого переодически заглядываю на http://www.mysql.ru/docs/ Wink