Вопрос по кодировкам и вообще (опять)

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

Аватар пользователя WebRIPPER WebRIPPER 7 сентября 2005 в 19:24

Собствено, вопрос уже проходил раз 20, но ответа толкового так и нет
Была БД MySQL версии 4.0.* и другой CMS (не важно какой), стала Drupal на БД MySQL 4.1.*
Ну скрипт конверта написали, mysqldump было в win1251 сделали iconv cp1251 utf8 mydump и потом импорт mysql db mydump, а потом сразу же mysql mydb < mydump в ту же базу данный - пропадают половина букв в locale тоже (не только в content).

Что делать? Заранее спасибо за ответ.

Комментарии

Аватар пользователя Nick Nick 8 сентября 2005 в 14:13

А dump делался еще в 4.0 версии ?
Если нет, то придется еще во всем дампе, в упоминаии кодировки прописать utf8
Перед заливанием дампа
alter database db_name default charset utf8;
и
alter database db_name charset utf8;

Аватар пользователя WebRIPPER WebRIPPER 8 сентября 2005 в 22:24

Всё стало ещё хуже - вот пример
* �?пи�?ок
* добавить �?зык
* импортировать
* �?к�?портировать

Сейчас все таблицы стали utf8_general_ci, хотя я поставил как ты сказал utf8

что делать?
Предположим у меня новая установка на MySQL 4.1.13-standard
какой Collation должен быть у бд и какой у таблиц?

Аватар пользователя Nick Nick 9 сентября 2005 в 23:03

1. Проверьте, цел ли dump. Если в дампе эти буквы битые, то надо это восстанавливать в дампе.

2. Заливайте дамп. mysql --default-character-set=utf8 < dump.mysql
Предварительно не забудте alter table из преведущих постов.

3. Добавте в includes/database.mysql.inc
mysql_query("set charset utf8");
сразу после строки
mysql_select_db(substr($url['path'], 1)) or die('unable to select database');

Аватар пользователя WebRIPPER WebRIPPER 10 сентября 2005 в 12:58

Так, заработало после двух дней.
Как делать:
1) Убиваем БД (вообще)
2) Делаем новую
3) Меняем Collation на utf8_general_ci
4) Берём database.mysql и в начало добавляем alter database ruil_dp default charset utf8; alter database ruil_dp charset utf8; [зачем - не знаю. По идее он САМ должен это делать если Collation до того поменяли - но он не делает]
5) Если есть старая БД и она в другой кодировке, берём её и ставим в другую БД, где до залива производим п.1-3. А дамп переводим через iconv из cp1251 в utf8.
6) Если есть, что переносить из старой БД - делаем это СЕЙЧАС, до того, как импортируем русификацию [если русский ставить до того, как импортируем, то он становится битый. Опять же - почему не знаю]
7) Разрешаем locale и ставим русский
Dirol ВСЁ.

Только так я победил вопросики и квадратики.