Свершилось ЧУДО!!!
у меня всё получилось...
попытаюсь ниже подробно описать что к чему...
вобщем статейка как правильно переносить базу чтобы кодировка отображалась правильно после переноса:
Задача: перенести базу с одного хостинга на другой...
Решение задачи:
Есть у нас исходная база, назовём её А и будет вторая в которую мы будем переносить, назовём её Б.
Не спишите создавать базу Б, потому как нам сначала нужно выяснить в сопоставлении какой кодировки её создавать.
1. что нам нужно выяснить для начала так это имеется ли у нас доступ к файлу /etc/my.cnf (обычно на выделенных серверах при наличии root доступа) и нет ли у нас уже созданных баз на новом хостинге работающих нормально (мой случай).
вообщем сначала опишу мою ситуацию у меня есть доступ к my.cnf но это ничего не меняет если есть другие рабочие базы на новом хостинге.
редактировать его не имеет смысла потому как это повлияет на работоспособность уже созданных баз. соответственно этот случайй подходит также и для тех у кого нет доступа к этому файлу (если нет доступа к файлу то вам без разницы есть на новом хостинге уже созданные рабочие базы или нет потому как на них повлиять изменением файла вы не сможете).
итак мы выяснили вышеописанное...
2. в старой и будущей делаем запрос
SHOW GLOBAL VARIABLES LIKE 'char%';
например у меня получилось так
база А:
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
база Б:
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
видим разницу в базе А - cp1251 в базе Б - latin1
в данном случае есть 2 выхода либо изменить на сервере файлик чтобы база Б тоже была cp1251 либо импортировать базу так чтобы она была latin1
в противном случае если мы её импортируем как cp1251 будут кракозябры...
3-а. это описание для тех у кого есть доступ к файлу на серве и нет рабочих баз на новом хостинге... но учтите что при переносе других баз они тоже должны будут быть в cp1251... при создании новых они будут работать нормально так как создаваться будут в выставленной кодировке.
прописываем в файле etc/my.cnf
[mysqld]
init-connect="SET NAMES cp1251"
default-character-set=cp1251
перегружаем сервер...
смотрим запрос ещё раз
должно быть так
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_filesystem binary
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
при таком случае просто экспортируем из старой базы и импортируем в новую... всё должно работать...
есть единственное НО нужно открыть файл который будете импортировать любым текстовым редактором (например akelpad. в этом редакторе хорошо можно узнать кодировку) и посмотреть в какой кадировке файл, в такой и импортировать его (указывать такую при импорте файла).
у меня она оказалась utf8.
как правильно узнать кодировку файла спросите вы...
я при открытии файла увидел в нём кракозябры... значит не она... начал перебирать сразу ткнул на utf8 и вместо непонятных символов я увидел русские буквы... значит она... utf8
итог
не смотря на то что все таблицы базы находятся в cp1251 импортируем мы файл в utf8... будьте внимательны!
3-б. это описание для тех у кого либо нет доступа к файлу my.cnf либо уже есть рабочие базы на новом серве и если изменить кодировку в файле они будут отображаться некорректно, либо в конце концов для тех кому лень лезть редактировать файлик...
мы выяснили что в старой базе все таблицы в cp1251 а новой нужно latin1
итак экспортируем базу выясняем в какой кодировке получился файлик... в нашем случае utf8...
заменяем тем же текстовым редактором в файле все cp1251 на latin1 сохраняем...
чтобы база создавалась с таблицами в кодировке latin1 которая нам нужна для корректного отображения...
импортируем файлик указав его кодировку utf8
всё должно работать...
если в этом пункте что-то непонятно смотрим пункте выше там изложено более подробно некоторые моменты...
ну вот вроде и всё... незнаю насколько понятно написал... у кого получится сделать по моей технологии отпишитесь...