Подвожу итог того, что я понял.
Для новой базы
Если есть возможность править у хостера
Если база раскорячена, т.е. "Переменная character_set_database не совпадает с другими переменными character_set_*,"
тогда нужно применять "патч" для файла
../include/functions.inc.php
т.е. конвертация будет динамически при подключении к БД, но данные и так будут хранится в раскорячке
Так?
Нет, не так.
Вам нужно почитать в документации к MySQL разницу между 4.0 и 4.1.
http://dev.mysql.com/doc/refman/4.1/en/charset-upgrading.htmlIt is important to note that the “MySQL 4.0 character set” contains both character set and collation information in one single entity. Beginning in MySQL 4.1, character sets and collations are separate entities. Though each collation corresponds to a particular character set, the two are not bundled together.
+
MySQL 5.0 Reference Manual :: 9 Internationalization and Localization :: 9.1 Character Set Supporthttp://dev.mysql.com/doc/refman/5.0/en/charset.htmlМне очень трудно это Вам объяснить своими словами, т.к. я боюсь, что Вы меня не поймете.
Если подключение происходит с одной кодировкой, а база данных в другой кодировке, то скрипт должен говорить базе данных, что он записывает данных в базу в той самой другой кодировке.
По умолчанию, галерея производит запись в базу данных, грубо говоря, в кодировке подключения.
Применяя патч, мы заставляем галерею производить запись в базу данных в нужной нам кодировке.
Не понял Вашей фразы:
4. Если честно, то никак. Нужно сливать базу через phpMyAdmin. Заливать на сервер с шелом. "Конвертировать" (преобразовавывать) через командную строку на сервере, где есть доступ к шелу (это наилучший вариант). И потом заливать в "правильную" базу через phpMyAdmin обратно.
Можно поподробней?
Т.к. кодировки были напутаны, то порядок такой:
1. Вы делаете обычный экспорт (т.е. ничего не меняя в его настройках) через phpMyAdmin в формате SQL (original.sql)
2. Заливает файл на хост с шелом
3. Выполняете команды
================================================
(с) Makc666В первом окне консоли:
mysql -u root -p
DROP DATABASE `test1`;
DROP DATABASE `test2`;
CREATE DATABASE `test1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `test2` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
use test2;
set names utf8; source /dumps/original.sql;
Во втором окне консоли:
mysqldump -u root -p --create-options --compatible=mysql40 --default-character-set=cp1251 test2 > /dumps/dump.sql
В первом окне консоли:
use test1;
set names cp1251; source /dumps/dump.sql;
Во втором окне консоли:
mysqldump -u root -p --create-options --default-character-set=cp1251 test1 > /dumps/newbase.sql
(с) Makc666================================================
4. Получаете файл newbase.sql, который можно заливать куда угодно через phpMyAdmin.
Только нужно помнить, что базу нужно создать заранее с нужным сопоставлением.
P.S.Всё выше перечисленно выполняется при условии:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci