forum.coppermine-gallery.net
Support => Русский (Russian) => Language Specific Support => cpg1.4.x FAQ (Russian) => Topic started by: bubastic on April 13, 2008, 07:53:50 pm
-
CPG 1.14.16
Версия сервера: 5.0.51
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: UTF8_unicode_ci
Базы данных: (CPG) utf8_general_ci
Сравнение: (когда выбираем БД, напротив назв. табл.) cp1251_general_ci
в PHPMyAdmin / таблицы (albums) / обзор - абракодабра
В самом альбоме почти все отлично,
кодировка в броузере Auto-select / Unicode (UTF-8)
"ш" показывается,
во View Source на всех страницах - русский нормально
кроме:
[URL=http://radikal.ru/F/i024.radikal.ru/0804/1c/e8f3b3100c57.gif.html][IMG]http://i024.radikal.ru/0804/1c/e8f3b3100c57t.jpg[/img][/URL]
и во View Source этой страницы - русский аброкадабра, кроме
$bbcode_data .= '<tr><td>BB-code: [b]Картинка в тексте[/b][url][img][/url]</td></tr>';
$bbcode_data .= '<tr><td><INPUT class="incode" readonly="readonly" onclick="f2(this);" ondblclick=\'copy_clip("'.$name_url.'")\' value='.$img_url.'>
-
опечатался CPG - 1.4.16
-
Прочитайте данную тему Кодировка в MySQL 4.1.* и MySQL 5.* (http://forum.coppermine-gallery.net/index.php/topic,49624.0.html) повнимательнее...
Также не ясно, зачем у Вас "Сравнение: (когда выбираем БД, напротив назв. табл.) cp1251_general_ci".
-
Вот этого я не знаю, как создалось, так создалось
Спасибо за линк, сейчас посмотрю, но перед тем как писать в этот пост проглядел посты и ФАКи и не нашел однозначных ответов, сплошная каша и мешанина.
Так-же сегодня проводил эксперемент две базы у хостера и на локале под денвером, одинаковые настройки
в одной Ш пишет, а в другой нет.
Копирую из той которая не пишет в ту которая пишет, Ш заменяется квадратом. Вручную преребиваю имя альбома и все ОК.
Делаю то=же на локале под Дневером фиг там, как был квадрат, так и остался :-(
SHOW VARIABLES LIKE 'character%
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
Для обоих баз.
Базы не конвертированные, а ставились нуля :-(
-
Вы не все переменные привели.
Не хватает:
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
Попробуйте так.
Удалите базу галереи.
Создайте новую базу СРАЗУ с сравнением utf8_general_ci
Выполните для данной базы запрос:
SHOW VARIABLES LIKE 'character%
Переменные должны выглядеть вот так:
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
character_sets_dir /usr/local/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
Уже после этого устанавливайте галерею в эту созданную вручную базу...
-
Сколько раз я уж так делал......
Да, что-же за ботва такая, остальные скрипты нормальн себя ведут, а CPG всю кровушку испил ;D
Не выберая базы
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
Выбрав БД CPG
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
-
1. Удалил
2. Создал со сравнением utf8_general_ci
SHOW VARIABLES для базы
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
-
Изыскания:
Для Денвера правим my.cnf
default-character-set = utf8 (было cp1251)
default-character-set = utf8 (было cp1251)
init-connect = "set names utf8" (было cp1251)
Решило проблему, т.е. получил:
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
В имеющейся базе полный хаос
При перебивке имени альбома, отображается везде (CPG/phpMyAdmin) по русски нормально
Ш отображается нормально
Теперь то, чего я не понял и внимание вопрос
1. при описаном случае используя charsetmgr.php, что во что конвертить, т.к. при всех вариантах кракозябры.
2. у хостера мне некто не разрешит изгалятся, что делать?
3. что делать с остальными базами, ведь весь мир не только CPG, т.е. я к тому что это не вариант
4. как создать/конвертировать базу в UTF8 имея доступ лишь phpMyAdmin
Извините за занудство, но просто хочется для себя, а может и для других все разложить по полочкам
В phpMyAdmin при добавлении
-
1. Удалил
2. Создал со сравнением utf8_general_ci
SHOW VARIABLES для базы
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
Прочитайте тему Кодировка в MySQL 4.1.* и MySQL 5.* (http://forum.coppermine-gallery.net/index.php/topic,49624.0.html) ЕЩЁ РАЗ повнимательнее!!!
Особенно второе сообщение:
http://forum.coppermine-gallery.net/index.php/topic,49624.msg238431.html#msg238431
Там есть ответ на данное ваше сообщение выше...
Изыскания:
Для Денвера правим my.cnf
default-character-set = utf8 (было cp1251)
default-character-set = utf8 (было cp1251)
init-connect = "set names utf8" (было cp1251)
Решило проблему, т.е. получил:
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
После этого Вам нужно:
- Удалите базу галереи
- Создайте новую базу СРАЗУ с сравнением utf8_general_ci
- Уже после этого устанавливайте галерею в эту созданную вручную базу
В имеющейся базе полный хаос
При перебивке имени альбома, отображается везде (CPG/phpMyAdmin) по русски нормально
Ш отображается нормально
А что Вы хотели, чтобы там наступил порядок? :)
До ваших изменений в my.cnf как раз был полный хаос с записью в базу данных.
А вот теперь они пишутся правильно, но т.к. ваша база данных уже была создана с кодировкой cp1251, Вам нужно её удалить и пересоздать заново, как описано выше, - это наилучший вариант для Вас, т.к. я понимаю, что галерея у Вас свежая.
Теперь то, чего я не понял и внимание вопрос
1. при описаном случае используя charsetmgr.php, что во что конвертить, т.к. при всех вариантах кракозябры.
2. у хостера мне некто не разрешит изгалятся, что делать?
3. что делать с остальными базами, ведь весь мир не только CPG, т.е. я к тому что это не вариант
4. как создать/конвертировать базу в UTF8 имея доступ лишь phpMyAdmin
Извините за занудство, но просто хочется для себя, а может и для других все разложить по полочкам
1. charsetmgr.php Вам в исходном варианте тут никак не поможет.
2. Читайте ответ в первом абзаце данного поста, а точнее ответ по ссылке:
http://forum.coppermine-gallery.net/index.php/topic,49624.msg238431.html#msg238431
3. Не совсем понятно, где делать? У хостера или там, где Вы меняли, my.cnf.
У хостера ничего видно не делать. Там где меняли my.cnf - тут без деталей я Вам не буду "городить" ответ, т.к. он может Вас ещё сильнее запутать. Только учтите, что если Вы изменили my.cnf и при этом не конвертировали базы, то у Вас сейчас старая часть базы в одной кодировке, а новая часть пишется в другой кодировке - потом может быть очень плохо из-за этого.
4. Если честно, то никак. Нужно сливать базу через phpMyAdmin. Заливать на сервер с шелом. "Конвертировать" (преобразовавывать) через командную строку на сервере, где есть доступ к шелу (это наилучший вариант). И потом заливать в "правильную" базу через phpMyAdmin обратно.
В phpMyAdmin при добавлении
Что то Вы видно тут недописали :)
-
Подвожу итог того, что я понял.
Для новой базы
Если есть возможность править у хостера
cd /usr/ports/databases/mysql50-server/
make WITH_CHARSET=utf8 WITH_COLLATION=utf8_general_ci
make install
Если база раскорячена, т.е. "Переменная character_set_database не совпадает с другими переменными character_set_*,"
тогда нужно применять "патч" для файла
../include/functions.inc.php
т.е. конвертация будет динамически при подключении к БД, но данные и так будут хранится в раскорячке
Так?
Не понял Вашей фразы:
ИЛИ
вы конвертируете все таблицы и возможно данные в кодировку UTF (но это зависит от того, находятся ли данные уже в UTF или нет).
Второй метод самый лучший, но в нём от вас требуется, чтобы вы знали, в какой кодировке хранятся данные, а затем вы выполнили конвертацию с изменением или без изменения данных.
4. Если честно, то никак. Нужно сливать базу через phpMyAdmin. Заливать на сервер с шелом. "Конвертировать" (преобразовавывать) через командную строку на сервере, где есть доступ к шелу (это наилучший вариант). И потом заливать в "правильную" базу через phpMyAdmin обратно.
Можно поподробней?
-
Подвожу итог того, что я понял.
Для новой базы
Если есть возможность править у хостера
Если база раскорячена, т.е. "Переменная 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.html
It 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 Support (http://dev.mysql.com/doc/refman/5.0/en/charset.html)
http://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
-
Если подключение происходит с одной кодировкой, а база данных в другой кодировке, то скрипт должен говорить базе данных, что он записывает данных в базу в той самой другой кодировке.
Из примера ниже:
character_set_client utf8
character_set_connection utf8 - подключение
character_set_database cp1251 - база данных
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
"скрипт должен говорить базе данных, что он записывает данных в базу в той самой другой (dbcharset) кодировке"
if ($CONFIG['dbcharset']) {
mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
}
$CONFIG['dbcharset'] = "cp1251";
Теперь праильно?
т.е. БД UTF8, но хранит данные в cp1251?
-
Из примера ниже:
character_set_client utf8
character_set_connection utf8 - подключение
character_set_database cp1251 - база данных
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
"скрипт должен говорить базе данных, что он записывает данных в базу в той самой другой (dbcharset) кодировке"
if ($CONFIG['dbcharset']) {
mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
}
$CONFIG['dbcharset'] = "cp1251";
Теперь праильно?
Если ставить с нуля, перед этим создав новую базу со сравнением cp1251_general_ci, то правильно.
Если не с нуля, то нужно сначала конвертировать базу, как я писал выше.
т.е. БД UTF8, но хранит данные в cp1251?
Я не совсем понимаю Ваш вопрос.
База данных хранится в cp1251 и подключение будет производиться по cp1251.
А UTF8 - это "кодировка" MySQL сервера по умолчанию.
-
Не фига, не Ваша правда
Далее не вопрос, а констатация фактов, а возможно и руководство к действию
Все по порядку SbS
Show Variable
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
Создаю базу со сравнением UTF8_general_ci
отработался запрос CREATE DATABASE `coper` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Show Variable для "coper"
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
Добавляю в галерее русскими буквами альбом/названия файлов
В phpMyAdmin кракозабры, в галерее Ш показывает
патчу functions.inc.php
Поставил $CONFIG['dbcharset'] = "cp1251";
В галерее все по прежнему, Ш показывает, В phpMyAdmin кракозабры,
после пребивки русских слов без изменений
Поставил $CONFIG['dbcharset'] = "UTF8";
В галерее кракозябры "Шапочка ", в phpMyAdmin кракозабры,
Добавляю русский альбом/название файла - новое показывется правильно, в phpMyAdmin тоже ОК,
Перебиваю кракозабровое название первого альбома/файла - все Ок и в галерее и в phpMyAdmin
P.S. Перебивка аналогична конвертации
-
Не фига, не Ваша правда
Фига, не фига - это все от воспитания зависит.
Если вы нервничаете и злитесь, то обычно в такие моменты помогает прогулка по окрестности.
Далее не вопрос, а констатация фактов, а возможно и руководство к действию
Все по порядку SbS
Show Variable
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
Для ситуации выше нужна:
$CONFIG['dbcharset'] = "cp1251";
Создаю базу со сравнением UTF8_general_ci
отработался запрос CREATE DATABASE `coper` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Show Variable для "coper"
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
Для данной ситуации выше нужна:
$CONFIG['dbcharset'] = "utf8";
Добавляю в галерее русскими буквами альбом/названия файлов
В phpMyAdmin кракозабры, в галерее Ш показывает
патчу functions.inc.php
Поставил $CONFIG['dbcharset'] = "cp1251";
В галерее все по прежнему, Ш показывает, В phpMyAdmin кракозабры,
после пребивки русских слов без изменений
И правильно, что не будет работать.
Вы что не видите, что во втором случае у Вас переменная:
character_set_database utf8
вообще-то utf8 равна, а не cp1251.
В вашем сообщении, как и во всей теме:
...
character_set_database cp1251
...
речь вообще-то идёт о cp1251, а не о UTF8
Поставил $CONFIG['dbcharset'] = "UTF8";
В галерее кракозябры "Шапочка ", в phpMyAdmin кракозабры,
Добавляю русский альбом/название файла - новое показывется правильно, в phpMyAdmin тоже ОК,
Перебиваю кракозабровое название первого альбома/файла - все Ок и в галерее и в phpMyAdmin
И правильно кракозябры, потому что база у вас до этого писалась неправильно, если Вы всё точно описали.
P.S. Перебивка аналогична конвертации
Если Вы говорите о ручной перебивке, то конечно, Вы можете перебивать все поля столько, сколько вашей душе угодно.
-
Фига, не фига - это все от воспитания зависит.
Если вы нервничаете и злитесь, то обычно в такие моменты помогает прогулка по окрестности.
С чего Вы взяли, что я нервничаю, я просто описал процес поиска и решения моей проблемы, а вдруг кому сгодится.
А Вам в любом случае респект за правильные мысли и советы. Токась, Вы как-то объясняете, что простое в сложное превращается ;D
-
Читала-читала. Чувствую - мозги уже дымятся :o
У меня картина еще разнообразнее чем здесь - аж 3 кодировка
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_unicode_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci
Почему три? Ведь здесь укзаны две? Да потому, что вообще-то я переношу готовую галерею, которая у меня выводится на прежнем месте в win-1521, база у нее в utf8 (я и экспортировала из старой базы ее в utf8 и открывается в новой базе она в utf8)
Старая pma у меня 2.11.9.1 (сервер 4.1.22-log), а новая 2.11.3 (5.0.37-standard)
На старом месте у меня кстати тоже была MySQL-кодировка: UTF-8 Unicode (utf8)
А Сопоставление соединения с MySQL: utf-8_unicode_ci
При этом сравнение в таблицах - cp1251_general_ci
У меня такой вопрос - верно ли будет в этом случае применить вот этот способ
http://forum.coppermine-gallery.net/index.php/topic,49624.msg238431.html#msg238431
И почему когда я вставляю в functions.inc.php этот код
diff -crbBN include/functions.inc.php include/functions.inc.php
*** include/functions.inc.php Tue Nov 6 07:48:00 2007
--- include/functions.inc.php Wed Jan 9 12:44:29 2008
***************
*** 184,189 ****
--- 184,192 ----
}
if (!mysql_select_db($CONFIG['dbname']))
return false;
+ if ($CONFIG['dbcharset']) {
+ mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
+ }
return $result;
}
У меня вылазит вот такая ошибка
Parse error: syntax error, unexpected T_INCLUDE in /home/admin/domains/lostjate.lgg.ru/public_html/gallery/include/functions.inc.php on line 3037
-
Откуда у меня эта кодировка latin1 взялась вообще не пойму. На старом месте cp1251 :P
-
Даа, вот что на старом месте... откуда эти латины взялись? Экпортировала базу в utf8
character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
collation_connection utf8_unicode_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
-
М-даа, проверила - это у меня оказывается на новом сервере такая вот ерунда.
На старом была cp1251, а на новом этот латин
??? не пойму что мне делать. Латин мне не нужен, потому что это же выходит не русская кодировка? ???
А мне нужна русская. Хоть какая-нибудь
-
М-даа, проверила - это у меня оказывается на новом сервере такая вот ерунда.
На старом была cp1251, а на новом этот латин
??? не пойму что мне делать. Латин мне не нужен, потому что это же выходит не русская кодировка? ???
А мне нужна русская. Хоть какая-нибудь
Создайте базу новую в cp1251, после чего уже импортируйте в неё вашу старую базу.
-
Мммм, легко сказать. У меня на VPS стоит Direct Admin (кстати оказалась очень похожа на простую админку эта штука)
Так вот - там для создания pma тупо пишешь ее название и пароль... и хлоп. Есть у тебя новая pma :P
Удобно так... но вот выбора кодировки я там не заметила.
Изнутри можно уже как-то поменять latin1 на cp1251?
-
для начала не помешало бы в файловую систему сетвера поставить свой phpmyadmin на всякий случай :) свой рубашка ближе к телу :) тем более что навряд он у них 3.x.x версии :)
потом можно спокойненько открыть базу данных, сходить в меню "операции" и изменить параметр "сравнение"
еще один путь, довольно безграмотный, но рабочий - если база импортировалась правильно то пример приведённый постом выше должен плясать... единственное что я б сделал это вручную заказал кодировку. Тоесть строку "SET NAMES '$CONFIG[dbcharset]'" переписал бы как "SET NAMES 'latin1'" для latin1 базы... может полегчать...
Однако лично я люблю немного другой приём. Из инструментов нам будут нужны AkelPad (он умеет брать базы весом и по 100 метров. сохраняет в любой кодировке), SypexDumper ну и PMA.
1. Берём в руки дамп, открываем акельпадом. Смотрим глазами на русские буквы. Если открылось правильно - замечательно, дамп хороший и всё такое. Если неправильно - плохо. Если просто кракозябра - подбираем кодировку, если не выходит - снимаем новый дамп.
2. В тексте дампа ищем сначала страшное слово DEFAULT CHARSET или просто charset... если находим - смотрим че мы нашли. У меня, например, это "DEFAULT CHARSET=latin1"... заменяем эту строку на пустую, опять ищем charset и так пока не будет перебиты все места, где мы указываем кодировку таблиц.
3. Точно таким же образом ищем слово collate... у меня это фраза "collate latin1_general_ci" - делаем то же самое, что и в 2, только с новыми значениями.
4. Сейвим под другим именем.
Что у нас теперь на выходе? На выходе у нас чистая отличная база БЕЗ жесткого указания кодировок таблиц. Что это значит? Это значит что в какой кодировке мы её сохраним, в такой кодировке база и будет.
Теперь нет ничего проще заставить сайт работать, ну например в utf8... языковой файл под utf8 у нас уже есть... создаём базу, делаем ей сравнение utf8_general_ci, например, сейвим это дело... идём в акель, открываем новосозданый файл, пересохраняем его в utf8... заливаем на хост sypexdumper и файл в utf кодировке, импортируем его в базу (можно лить не весь файл, а поделить потаблично - посмотреть как оно куски закинет)... подключаемся и пользуемся... /*если сайпексом не выйдет - пробуем лить через PMA... а если хостер позволяет подключение извне, то и navicat использовать очень не грех*/
ВНИМАНИЕ! Могут возникнуть глюки если картинки в альбомах (файлы) названы по-русски.
Инструкцию писал по личному опыту. Весной переносил сайт на новое место - пришлось базу конвертнуть в utf8 (а база была немаленькой - около 100 метров в упакованом виде). Дело в том что в альбомах были файлы с русскими именами, переименовать их ну аж никак не выходило... в итоге имена файлов оказались в utf кодировке... чёб не потерять связь с этим миром пришлось и базу из latin1 перенести в utf8...
Отакие помидоры :)
-
да, чуть не зыбал.
utf8 это utf8
1251 может зваццо win1251, cp1251, 1251
latin1 же может зваццо latin1, а может 1252
Причем че характерно - если 1251 дамп лить как latin1 (на файле, сохранённом в 1251 поставить кодировку при импорте latin1), то затянет неправильно, хотя кодовые страницы, по сути, одинаковые.
Ну и выходит сто для LeaX самый он вариант, мож и дубовый, но зато сработает:
1. Придумать в какой кодировке она хочет базу
2. Сделать дамп базы данных как я писал выше, но сейвить не в utf8, а в той кодировке что она выберет.
3. Если не заработает сразу - поставить патч что на предыдущей странице она сама и написала, только SET NAMES 'выбраная_тобой_кодировка_названием'.
С вероятностью 99% заработает и проблем не возникнет.
-
Отакие помидоры
:P точно
GeXu3 все-то у вас вечно как-то заковыристо.
Я начала с того, что пнула хостера - мол какого ... вы тут с кодировками балуетесь?
Не знаю что выйдет :D
1251 может зваццо win1251, cp1251, 1251
это все разные? :-X тихий ужас. Понятия не имею, какая мне нужна. Вроде бы cp1251
(судя по пред. странице character_set_database cp1251)
-
Ну дело в том что у меня простые проблемы не возникают :) Зачастую валюсь на таком, что не имеет очень простых решений. А способ переноса действительно универсальный. Дело в том что при таком переносе как я написал дамп становится на сервер в той кодировке, на которую настроена база данных и становиццо на удивление правильно :)
-
Ураа, мой способ быстрее сработал :D :D :D - кодировку изменили.
Правда теперь придется блин перезалить все 3 базы - сайта, форума и галереи :P потому что только в пустых новых теперь вот так как надо, а в старых вообще кишмиш... мышь-кышь :-\
Зато стало хоть понятнее, что теперь делать - тупо заливать по-новой и чуть подправить пути.
-
Но самое обидное, что всё это мона было сделать даже не пиная админов... :D
-
Не могу сконнектить SMF 1.1.8 и Сoppermine... на Денвере получилось, когда установил все с ноля, как подключаю свою БД - слетает. Переконвертировал БД форума в UTF8 - вроде заработало, только название галереи было ������, хотя в базе видел нормально, ну и кодировки при переходе с форума не совпадали. Конвертнул еще раз базу в UTF8 - все стало нормально, только бридж не работает. Мозг уже кипит. Выкачал на хост галерею, там тоже коннекта с форумом нету.
Создал новую БД (без данных) на хосте, выполнил к ней запрос SHOW VARIABLES; и вижу:
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
Кто бы направил ход моей мысли? Не сильно я в этом рублю однако....
-
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci
Кто бы направил ход моей мысли? Не сильно я в этом рублю однако....
Для галереи вы должны наложить патч:
http://forum.coppermine-gallery.net/index.php/topic,49624.msg238431.html#msg238431
и прописать там кодировку UTF8
Тоже самое должны сделать и для форума.
Если я не ошибаюсь, то примерно так:
1. Открыть файл index.php
2. Найти код:
// Connect to the MySQL database.
if (empty($db_persist))
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
else
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);
3. Заменить на:
// Connect to the MySQL database.
if (empty($db_persist)){
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
mysql_query("SET NAMES 'utf8'",$db_connection);
}else{
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);
}
-
Да, спасибо Makc666 - на Денвере заработало все классно!
Причем в ../include/functions.inc.php я патч не вписал ???, на сайте не могу проверить - инет страшно тормозит.
-
Причем в ../include/functions.inc.php я патч не вписал ???, на сайте не могу проверить - инет страшно тормозит.
Это может повлечь за собой некорректное внесение записей в базу данных, что затруднит дальнейшую работу.
-
../include/functions.inc.php
diff -crbBN include/functions.inc.php include/functions.inc.php
*** include/functions.inc.php Tue Nov 6 07:48:00 2007
--- include/functions.inc.php Wed Jan 9 12:44:29 2008
***************
*** 184,189 ****
--- 184,192 ----
}
if (!mysql_select_db($CONFIG['dbname']))
return false;
+ if ($CONFIG['dbcharset']) {
+ mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
+ }
return $result;
}
Чота не получается его вписать у меня - ошибка на строке diff -crbBN include/functions.inc.php include/functions.inc.php....
Может сам файл дашь поглядеть?
Tue Nov 6 07:48:00 2007
Wed Jan 9 12:44:29 2008 - там разве нужны?
На хосте выглядит так:
TEST GALLERY - ????
TEST GALLERY - ���� :'(
-
Чота не получается его вписать у меня - ошибка на строке diff -crbBN include/functions.inc.php include/functions.inc.php....
Может сам файл дашь поглядеть?
1. Открыть файл:
functions.inc.php
2. Найти код:
if (!mysql_select_db($CONFIG['dbname']))
return false;
3. Добавить после код:
if ($CONFIG['dbcharset']) {
mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
}
И не забывайте про файл:
../include/config.inc.php
дописать строку:
$CONFIG['dbcharset'] = "";
, в которой указать кодировку базы данных галереи!
Всё просто :)
-
Заработало - спасибо! Только интеграция опять отвалилась :'( после восстановления БД на хосте. Чота у меня либо одно, либо другое работает, но ни как не вместе... ;D
Крайне тонка грань.....
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
init_connect SET NAMES cp1251
-
Закачал на хост, удалил таблицы галереи из БД, проинсталлировал галеру на хосте в базу форума.
В smf10.inc.php прописал:
require_once('../forum/SSI.php');
$boardurl = 'http://www.сайт.ru/forum';
Стр. 56 'host' => $db_server ? $db_server : 'mysql4.имяхоста.ru',
Включаю бридж - не могу войти в галерею.
-
Закачал на хост, удалил таблицы галереи из БД, проинсталлировал галеру на хосте в базу форума.
В smf10.inc.php прописал:
require_once('../forum/SSI.php');
$boardurl = 'http://www.сайт.ru/forum';
Стр. 56 'host' => $db_server ? $db_server : 'mysql4.имяхоста.ru',
Включаю бридж - не могу войти в галерею.
Не совсем понял, но может имена cookies вы опять забыли сделать одинаковыми? :)
-
Поставил в галере куки как на форуме - SMFCookie406. При обращении к главной странице постоянно отсылает на форму ввода логина, после ввода логина - опять.... :(
Вышел из форума, вошел и ... оказался в галерее залогиненным! Но ведь на локале и с разными куками у меня работало... ???
Makc666 - отдельное спасибо за плоды просвещения ... :) Пошел юзать дальше.
-
Сегодня не мог попасть в галерею, пока не вышел из форума, потом залогинился и попал редиректом в галерею, а не на форум. ???
Т.е. кто будет регистрироваться и логиниться, все будут сначала попадать в галерею.
-
Сегодня не мог попасть в галерею, пока не вышел из форума, потом залогинился и попал редиректом в галерею, а не на форум. ???
Т.е. кто будет регистрироваться и логиниться, все будут сначала попадать в галерею.
В бридже всегда было настроено так, что откуда логинитесь, туда и возвращаетесь.
-
SHOW VARIABLES LIKE 'character%
Как выполнять этот запрос для базы данных
-
Ozz99, используте, пожалуйста, Firefox или Opera на данном форуме.
Описано тут -> http://forum.coppermine-gallery.net/index.php/topic,37805.0.html
SHOW VARIABLES LIKE 'character%
Как выполнять этот запрос для базы данных
Установить phpMyAdmin (http://www.phpmyadmin.net/).
-
Требуется срочная помощь... MySQL настроена на utf8. На "шоу вариаблес" отвечает:
Variable_name Value
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
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\char...
Ставлю cpg1.4.25 с нуля. Создаю базу ( сравнение и сопоставление utf8_general_ci ) и инсталю галерею. Затем захожу в конфиг и ввожу название русскими буквами. В базе данных это название отображается как Фотоклуб. Если в базе вписать вместо Фотоклуб название русскими буквами, то на сайте оно будет выглядеть знаками вопроса ( ? ? ? ? ? ? ? ? ? ?) В чем может быть проблемма? (phpmyadmin 3.2.0.1, Firefox 3.5, IE7)
-
Прописал в my.ini
[mysqld]
skip-character-set-client-handshake
default-character-set=utf8
init-connect='SET NAMES utf8'
Помогло, всё встало на свои места и везде ( и в базе, и на сайте) русский язык... ;D
-
Прописал в my.ini
[mysqld]
skip-character-set-client-handshake
default-character-set=utf8
init-connect='SET NAMES utf8'
Помогло, всё встало на свои места и везде ( и в базе, и на сайте) русский язык... ;D
Если Вы более внимательно почитаете тему:
http://forum.coppermine-gallery.net/index.php/topic,49624.0.html
, то увидите, что там привидены ещё три переменные:
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
, которые в вашем сообщении, на одно выше, отсутствуют.
То, что Вы сделали в my.ini - это фактически тоже самое, что наложение патча.
Судя по всему, где-то у Вас не utf8 по умолчанию.