Кодировка - проблемы - перейти с CP-1251 нa UTF-8 - Page 3 Кодировка - проблемы - перейти с CP-1251 нa UTF-8 - Page 3
 

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

Кодировка - проблемы - перейти с CP-1251 нa UTF-8

Started by lunik, November 29, 2005, 10:08:57 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Alex Revo

Посмотрите еще кодировку у файлов темы и какой тег там прописан в коде.

Ozz999

Разобрался. Скачал заново галерею и залил по новой язык русский.

Просто нашёл на форуме, что нельзя править блокнотом. А я как раз там пару слов изменил. Ну сума сойти с это галереи. Как то с кодировками разработчики не подумали

Alex Revo

Дело в том, что блокнот сохраняет в UTF-8 BOM, поэтому я порекомендовал notepad++

Makc666

Quote from: Ozz999 on March 05, 2010, 12:54:09 PM
Ну сума сойти с это галереи. Как то с кодировками разработчики не подумали

Да нет в ней никаких проблемы если честно.

Если у Вас база данных установлена "неверно" или вы где-то напортачили ранее, то это не значит, что проблемы в галереи.

BigMichael

Прошу помощи. Решил написать в эту тему, так как тут тема ближе всего к тому, что нужно исправить.
После переноса галереи на новый хостинг вижу то, что во вложении. А именно, русские названия всех категорий и альбомов в виде знаков вопроса. Галерея и база имеют одинаковую кодировку cp1251, как и русификатор галереи. Переносил галерею следующим образом:
1. Сделал дамп БД на старом хостинге.
2. Залил его на новый хостинг. В PHPmyAdmin проконтролировал правильность переноса - всё на русском, кодировка правильная - ср1251. В файл русификации добавлен
3. Скопировал все файлы галереи со старого хостинга на новый.
4. Перепрописал пути к БД в соответствующем файле, база подключилась успешно.

Подскажите, пожалуйста, что где можно поправить, чтобы устранить эту проблему.

Makc666

Quote from: BigMichael on April 02, 2010, 07:48:03 AM
Подскажите, пожалуйста, что где можно поправить, чтобы устранить эту проблему.
Попробуйте внести изменения из вот этого поста:
http://forum.coppermine-gallery.net/index.php/topic,49624.msg238431.html#msg238431

При этом в строке:
$CONFIG['dbcharset'] = "";
нужно указать кодировку:
$CONFIG['dbcharset'] = "cp1251";

BigMichael

Makc666, спасибо за ответ и за личное сообщение. К сожалению, не могу ответить вам также в личку, а тема, на которую вы привели ссылку, уже закрыта. Поэтому пишу сюда. В моём случае переменная character_set_database не совпадает с другими переменными character_set_*, вот то что есть у меня:

character_set_client utf8
character_set_connection utf8
character_set_database cp1251
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_general_ci
collation_database cp1251_general_ci
collation_server latin1_swedish_ci


Соответственно, нужен "патч" для файла ../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;
  }


Прошу "ткнуть носом" в нужное место кода, куда это надо вставить. И прошу прощения за дилетанство, обещаю исправиться. Файл ../include/config.inc.php скорректировал успешно, указав там кодировку базы данных галереи - cp1251

ich

Quote from: BigMichael on April 06, 2010, 09:35:55 AM
Прошу "ткнуть носом" в нужное место кода, куда это надо вставить. И прошу прощения за дилетанство, обещаю исправиться. Файл ../include/config.inc.php скорректировал успешно, указав там кодировку базы данных галереи - cp1251
В файле functions.inc.php поиском по запросу ($CONFIG['dbname'] найдете функцию:
function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
        if (!$result) {
                return false;
        }
        if (!mysql_select_db($CONFIG['dbname']))
                return false;
        return $result;
}

меняете на
function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
        if (!$result) {
                return false;
        }
        if (!mysql_select_db($CONFIG['dbname']))
                return false;
                if ($CONFIG['dbcharset']) {
                mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
                }
        return $result;
}

BigMichael

Спасибо большущее! Теперь всё исправил, всё работает как надо.

BigMichael

Снова аналогичная проблема, уже с другой галереей. Картинка с проблемой в приложении. Имена пользователей, написанные русскими буквами отображаются в виде знаков вопроса.
Все вышеописанные действия предприняты:

1. По результату запроса к БД show variables имею следующее:
Quotecharacter_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_general_ci
collation_database    latin1_swedish_ci
collation_server    latin1_swedish_ci

Затем:
1. "Пропатчен" файл functions.inc.php, как описано ранее.
2. Добавлена строка с кодировкой БД в файл config.inc.php

Результат на скрине. Помогите, пожалуйста. Что и где еще нужно скорректировать?

BigMichael

В настройках галереи выставлен Русский язык и кодировка символов cyrillic (Windows-1251), в языковом файле russian.php написано:
Quote$lang_charset = 'utf-8';
И что-то я во всех этих переменных совсем запутался...

BigMichael

Коллеги, я всё понимаю. Не форумом единым, как говорится... Но не по неделе же ждать ответа на простой в общем-то вопрос. Ведь именно здесь чуть ли не единственная возможность получить квалифицированный совет по коппермайну на русском...

Makc666

Quote from: BigMichael on April 14, 2010, 10:12:53 PM
Снова аналогичная проблема, уже с другой галереей. Картинка с проблемой в приложении. Имена пользователей, написанные русскими буквами отображаются в виде знаков вопроса.
Все вышеописанные действия предприняты:

А что значит аналогичная проблема? В прошлой проблеме у Вас все записи из базы данных отображались не на русском. Сейчас отображаются только имена пользователей. Такое обычно происходит, когда галерея интегрирована с другим приложением.

В текущей базе данных галереи, имена пользователей нормально отображаются, при просмотре черзе phpMyAdmin?

BigMichael

Quote from: Makc666 on May 04, 2010, 12:05:00 AM
В текущей базе данных галереи, имена пользователей нормально отображаются, при просмотре черзе phpMyAdmin?
Галерея интегрирована с СМФ. Насчёт просмотра имён в БД - какую таблицу конкретно смотреть? Конкретно этот пользователь, у которого вместо ника отображаются ??????, некоторое время назад сменил отображаемое имя. И оно везде видно корректно, и в БД, и в комментах, знаки "?" только в этих местах:
Главная > Галереи пользователей > ??????
Случайные файлы - ??????'s Gallery
Последние добавления - ??????'s Gallery

Судя по количеству символов, галерея пытается написать его старый ник, которого уже нет.
Для наглядности вот ссылка на галерею: http://bowmania.ru/coppermine/index.php?cat=10010

Makc666

Нагляднее всего видно тут:
http://bowmania.ru/coppermine/profile.php?uid=10

Поступите так.
Закройте ваш сайт с помощью .htaccess от всех, кроме себя (вашего IP адреса)
Order deny,allow
Deny from All
Allow from <ВАШ_IP>


Потом отключите интеграцию.
http://yourdomain.tld/your_coppermine_folder/bridgemgr.php

И откройте ссылку:
http://bowmania.ru/coppermine/profile.php?uid=10

Как будет после этого будет имя отображаться?

BigMichael

В галерее есть только один зарегистрированный пользователь. Это я, администратор, который устанавливал галерею. Все остальные пользователи - это пользователи форума смф, в связке с которым работает галерея. Информация о пользователях берется из БД форума. Соответственно, при отключенной интеграции такого пользователя: http://bowmania.ru/coppermine/profile.php?uid=10 не существует.

Makc666

Quote from: BigMichael on May 17, 2010, 09:40:07 AM
В галерее есть только один зарегистрированный пользователь. Это я, администратор, который устанавливал галерею. Все остальные пользователи - это пользователи форума смф, в связке с которым работает галерея. Информация о пользователях берется из БД форума. Соответственно, при отключенной интеграции такого пользователя: http://bowmania.ru/coppermine/profile.php?uid=10 не существует.
Значит

или кодировка базы данных вашего форума и вашей галереи разные,

или в форуме проблемы с кодировкой из-за неправильного подключения форума к базе данных - другими словами - т.к. форум работает с этой же базой данных, а кодировка, исходя из вашего примера выше,
character_set_connection    utf8
character_set_database    latin1

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

Какой из этих вариантов у Вас - это вы только можете ответить.

BigMichael

Quote from: Makc666 on May 28, 2010, 11:19:47 PM
Значит
или кодировка базы данных вашего форума и вашей галереи разные,
или в форуме проблемы с кодировкой из-за неправильного подключения форума к базе данных - другими словами - т.к. форум работает с этой же базой данных, а кодировка, исходя из вашего примера выше,
character_set_connection    utf8
character_set_database    latin1

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

Какой из этих вариантов у Вас - это вы только можете ответить.

Как мне это определить? В самом форуме проблем с кодировкой нет никаких, там всё везде корректно отображается. Везде там прописана cp1251. Конечно же, в форуме не используется патч для галереи. Там делались свои патчи на другие файлы. В результате везде в форуме используется cp1251. Проблема именно в галерее, по всей видимости. Несоответствие кодировок. Но как это правильно продиагностировать и исправить, до меня так и не доходит. Все проделанные до этого действия принесли свои положительные результаты, но до конца проблема не устранена. К тому же обнаружилась ещё одна нестыковка по кодировкам - она во вложенном файле.  Названия групп пользователей в админке галереи отображаются знаками вопроса. Очень прошу объяснить, что и где нужно ещё исправить, чтобы всё это устранить. Готов предоставить для этого все необходимые данные. Помогите, пожалуйста.

Makc666

В базе данных у вас должны быть ДВЕ базы. Одна для форума, другая для галереи.
Сами базы созданы в каких кодировках?
А так же таблицы в этих базах в правильных кодировках находятся?
Должно быть cp1251_general_ci

Я бы начал с наведения порядка с этим.

BigMichael

База у меня одна для форума и для галереи. Просто внутри БД есть таблицы с разными префиксами. Что касается форума, то там всё и везде в cp1251_genereal_ci. А вот с галереей везде разное. Я прописывал патчи для некоторых файлов галереи, об этом сообщал ранее. Но непосредственно кодировку языка в таблицах галереи не делал. Если это сделать просто руками, прописав в PHPMyAdmin нужную кодировку, это поможет? Или нужны какие-то другие действия?