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

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

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

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

Previous topic - Next topic

0 Members and 3 Guests 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 нужную кодировку, это поможет? Или нужны какие-то другие действия?