Интеграция и имена в пользователей - Page 2 Интеграция и имена в пользователей - Page 2
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Интеграция и имена в пользователей

Started by Abaza, February 22, 2006, 09:22:00 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Makc666

Quote from: vglick on September 28, 2006, 03:25:21 PM
В галерее русские ники отображаются знаками вопроса, в частности в "Альбомах пользователей"
Форум IPB 1.3.1, галерея 1.4.9 интегрированная в форум
И форум и галерея работают в кодировке UTF-8
Еще замечено, в настройках групп имена групп тоже отображаются знаками вопроса.
Подскажите, пожалуйста, как это вылечить.
Спасибо.
Переношу тему сюда:
http://forum.coppermine-gallery.net/index.php?topic=28253.0

Не хватает данных.
Галерея 1.4.9 ставился с нуля?
А почему такая уверенность, что IPB работает в UTF-8?
Она может данные хранить в UTF-8 в базе данных, но обрабатывать эти данный она может и в Windows-1251
Что-то мне подсказывает, что проблема именно в этом...

vglick

С нуля ставилась галерея 1.4.4, когда обнаружилась проблема с русскими никами проапгрейдил до 1.4.9, думал поможет.
В IPB все языковые файлы переконвертировал в UTF8, все таблицы в базе в UTF8, collation UTF8. После этого весь форум стал в знаках вопроса пока в функцию подключения к базе не добавил mysql_query("set names utf8");
После установки галереи в свою базу не обратил внимание на кодировку. Переконвертировал базу галереи в UTF8, collation UTF8. После этого вся галерея (почти вся) стала в знаках вопроса пока в функцию подключения к базе не добавил mysql_query("set names utf8");
Теперь имею, что писал выше. Вот вся история. Я уже не знаю где копать дальше.

vglick

Удивительные вещи происходят.
Сейчас установил и форум и галерею (все, что работает в сети) на Денвер.
Никаких проблем нигде нет, все корректно. Локально!
А в сети - русские ники не показываются.
Может что-то с базой? Тогда и локально было бы криво.
Не понимаю  ???

pipemba

имею такую же проблему..
как ее решить?

ޫ?a>

Varrah

Возрадуемся, братья! Ж-)

Короче так: цпг не передает БД информации о том, в какой кодировке он пишет данные, равно как и получает, конечно же. Таким образом БД думает, что цпг использует дефолтовую кодировку (какая кодировка стоит по умолчанию в БД - смотреть, понятное дело в настройках БД) потому и информацию, которую записал в БД пхпбб она выдает в цпг не в нужной кодировке (которую указал при записи пхпбб), а в дефолтной, например кои8 или латин-1. Чтобы такого не происходило достаточно при каждом коннекте цпг к МуСКЛу добавить простой запрос вида "SET NAMES <charset>" где <charset> - кодировка в которой работает пхпбб и ваша галерея. Кодировка должна быть одинаковой и галереи и пхпбб, иначе глюк все равно вылезет. Возможно, вообще-то, сделать так, чтобы кодировка бралась из конфигов пхпбб и затем использовалась только при запросах к таблицам пхпбб, но это уже вопрос к разработчикам бридж-менеджера и т.п.
Пока я могу лишь предложить решение для случая когда и цпг и пхпбб работают, например в кодировке виндоувз-1251.

Итак:
0. Дочитайте это сообщение до конца.
0,5. Сделайте бэкап изменяемых ниже файлов
0,6. Сделайте бэкап базы

1. Находим в папке coppermine файл bridgemgr.php
в нем ищем строку:
$link = mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']);

сразу после нее дописываем еще одну строку:
mysql_query("SET NAMES cp1251", $link);

аналогично находим строку:
$link = @mysql_connect($BRIDGE['db_hostname'], $BRIDGE['db_username'], $BRIDGE['db_password']);

и добавляем сразу после нее:
mysql_query("SET NAMES cp1251", $link);

2. В файле coppermine\include\functions.inc.php ищем строку:
$result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);

после нее добавляем
mysql_query("SET NAMES cp1251", $result);

3. В файле coppermine\bridge\udb_base.inc.php ищем строку:
$this->link_id = mysql_connect($this->db['host'], $this->db['user'], $this->db['password']);

после нее добавляем:
mysql_query("SET NAMES cp1251", $this->link_id);

собственно все.

Да, важный момент: после всего этого безобразия с кодом, если в вашей галерее уже было много русских названий, комментов и пр. - все станет нечитаемым, т.к. теперь БД наконец-то начтне выдавать вам байты текста, перекодируя их в вин-1251. Потому либо руками, либо при помощи каких-либо инструментов для перекодировки содержимого БД перекодируйте ваши тексты в нужные кодировки. В моем случае все делалось практически сразу после установки цпг, потому я все переделал руками (всего-то строчек пять было).

Если вы используете не вин-1251, а какую-то другую кодировку, то проверьте, как она называется в стандарте МуСКЛа. Сделать это можно здесь: http://dev.mysql.com/doc/refman/4.1/en/charset-charsets.html

Ну вроде все....

pipemba

а если форум ипб и кодировка кои8?

gtplus

Quote from: Abaza on February 22, 2006, 09:22:00 AM
Добрый день.. Заранее извиняюсь если моя проблема давно обсуждалась..

Имеем PHPBB 2.0.19 и CPG 1.4.3. после создания bridge все работает, только вот имена пользователей, написанные русскими буквами отображаются некорректно. Уже два дня ищу решения.. мозги кипят..  ???
Проблема кодирунга, либо phpBB или Gallery

vglick

Quote from: gtplus on November 28, 2006, 10:42:13 AM
Проблема кодирунга, либо phpBB или Gallery
Конструктивный ответ, главное что помогает решить проблему.

vglick

Обратил внимание, что знаками вопроса отбражаются не только русские ники, но и названия групп, которые тоже на русском языке.
И ники и названия групп берутся из базы форума, в базе форума все отображается корректно и на самом форуме тоже.
Исходя из этого могу предположить, что сбой происходит при передаче данных из форума в галерею.
Но галерея интегрирована с форумом, так может быть проблема в файлах, отвечающих за интеграцию?
Т.е. bridgemgr.php и invisionboard13.inc.php
Может кто-нибудь поможет разобраться, из знающих php? 

Varrah

см выше
уже все расписал

vglick

Quote from: Varrah on December 25, 2006, 12:41:19 PM
см выше, уже все расписал
Большое спасибо, все отлично работает.
Т.к. у меня все работает в кодировке UTF-8, то руками ничего править не пришлось.
Спасибо!

vglick

У меня форум IPB 

Abaza

А  если я допустим хочу выводить все данные в галерее в utf-8, а на форуме у меня кодировка cp1251

Makc666

Quote from: Abaza on January 30, 2008, 06:30:52 PM
А  если я допустим хочу выводить все данные в галерее в utf-8, а на форуме у меня кодировка cp1251
Не получится в тех местах, где галерея и форум будут пересекаться. К примеру, имена пользователей, имена групп пользователей, также всего скорее могут быть проблемы с паролями и авторизацией.
Лучше подобным не заниматься.

saks

да, у меня была тоже такая проблема. форум смф в кодировке вин1251 , галерея тоже старая была, но после обновления хотела перевестись в утф, вобщем я все перевел в утф, но после этого возникли проблемы с русскими именами пользователей , передаваемыми из форума.
щас привел все к единой кодировке вин1251 и все работает... все да не все...

в кодировке вин1251 не работает поиск! в утф специально переконвертил снова все и проверил, в нем работает корректно, а в вин не работает. что можно сделать ??

MediLand

Quote from: Varrah on October 22, 2006, 01:49:48 PM
Возрадуемся, братья! Ж-)

Короче так: цпг не передает БД информации о том, в какой кодировке он пишет данные, равно как и получает, конечно же. Таким образом БД думает, что цпг использует дефолтовую кодировку (какая кодировка стоит по умолчанию в БД - смотреть, понятное дело в настройках БД) потому и информацию, которую записал в БД пхпбб она выдает в цпг не в нужной кодировке (которую указал при записи пхпбб), а в дефолтной, например кои8 или латин-1. Чтобы такого не происходило достаточно при каждом коннекте цпг к МуСКЛу добавить простой запрос вида "SET NAMES <charset>" где <charset> - кодировка в которой работает пхпбб и ваша галерея. Кодировка должна быть одинаковой и галереи и пхпбб, иначе глюк все равно вылезет. Возможно, вообще-то, сделать так, чтобы кодировка бралась из конфигов пхпбб и затем использовалась только при запросах к таблицам пхпбб, но это уже вопрос к разработчикам бридж-менеджера и т.п.
Пока я могу лишь предложить решение для случая когда и цпг и пхпбб работают, например в кодировке виндоувз-1251.

Итак:
0. Дочитайте это сообщение до конца.
0,5. Сделайте бэкап изменяемых ниже файлов
0,6. Сделайте бэкап базы

1. Находим в папке coppermine файл bridgemgr.php
в нем ищем строку:
$link = mysql_connect($_POST['db_hostname'], $_POST['db_username'], $_POST['db_password']);

сразу после нее дописываем еще одну строку:
mysql_query("SET NAMES cp1251", $link);

аналогично находим строку:
$link = @mysql_connect($BRIDGE['db_hostname'], $BRIDGE['db_username'], $BRIDGE['db_password']);

и добавляем сразу после нее:
mysql_query("SET NAMES cp1251", $link);

2. В файле coppermine\include\functions.inc.php ищем строку:
$result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);

после нее добавляем
mysql_query("SET NAMES cp1251", $result);

3. В файле coppermine\bridge\udb_base.inc.php ищем строку:
$this->link_id = mysql_connect($this->db['host'], $this->db['user'], $this->db['password']);

после нее добавляем:
mysql_query("SET NAMES cp1251", $this->link_id);

собственно все.

Да, важный момент: после всего этого безобразия с кодом, если в вашей галерее уже было много русских названий, комментов и пр. - все станет нечитаемым, т.к. теперь БД наконец-то начтне выдавать вам байты текста, перекодируя их в вин-1251. Потому либо руками, либо при помощи каких-либо инструментов для перекодировки содержимого БД перекодируйте ваши тексты в нужные кодировки. В моем случае все делалось практически сразу после установки цпг, потому я все переделал руками (всего-то строчек пять было).

Если вы используете не вин-1251, а какую-то другую кодировку, то проверьте, как она называется в стандарте МуСКЛа. Сделать это можно здесь: http://dev.mysql.com/doc/refman/4.1/en/charset-charsets.html

Ну вроде все....

Спасибо - помогло. У меня Форум phpBB3.0.5 и Coppermine 1.4.25 работают в кодировках UTF-8, поэтому я использовал Ваши рекомендации, только вместо "cp1251" везде написал "utf8".

Однако есть "но": пользователь с кириллическим ником, изначально зарегистрировавшийся на Форуме и перешедший в интегрированную Галерею, размещает фотографию, пишет русский комментарий. Всё русское правильно отображается, за исключением:
когда щёлкаю по промежуточному изображению и полная картинка всплывает в отдельном окне, то в альтернативном тексте к полной картинке всё равно абракадабра! Пример: http://mediland.kiev.ua/coppermine/displayimage.php?album=8&pos=0 и щёлкните по верхней картинке (которая над кинолентой).

Значит, надо провести аналогичные вышеуказанным изменения ещё в каком-то файле Галереи?

Makc666

Quote from: MediLand on October 25, 2009, 01:52:45 PM
Однако есть "но": пользователь с кириллическим ником, изначально зарегистрировавшийся на Форуме и перешедший в интегрированную Галерею, размещает фотографию, пишет русский комментарий. Всё русское правильно отображается, за исключением:
когда щёлкаю по промежуточному изображению и полная картинка всплывает в отдельном окне, то в альтернативном тексте к полной картинке всё равно абракадабра! Пример: http://mediland.kiev.ua/coppermine/displayimage.php?album=8&pos=0 и щёлкните по верхней картинке (которая над кинолентой).

Значит, надо провести аналогичные вышеуказанным изменения ещё в каком-то файле Галереи?

Это уже обсуждалось на форуме. Всего скорее Вы редактировали файл русификации галереи в блокноте.
Этого делать нельзя, т.к. Блокнот добавляет в начало файла лишнюю бяку.

Как её убрать я описывал тут:
How to remove UTF-8 signature with Araxis Merge
http://forum.coppermine-gallery.net/index.php?topic=28539.msg132033#msg132033

How to remove UTF-8 signature with WinHex
http://forum.coppermine-gallery.net/index.php?topic=28539.msg132037#msg132037

Batch add files problem with languages files, UTF-8 signature and Notepad
http://forum.coppermine-gallery.net/index.php?topic=28539

MediLand

Вы имеете в виду файл русификации "lang/russian.php"? Я его вообще не трогал.

Makc666

Quote from: MediLand on December 19, 2009, 08:44:19 PM
Вы имеете в виду файл русификации "lang/russian.php"? Я его вообще не трогал.
Залейте самый свежый русский языковый файл в Binary режиме.