Отображение галереи в кодировке windows-1251 win1251 - Page 2 Отображение галереи в кодировке windows-1251 win1251 - 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

Отображение галереи в кодировке windows-1251 win1251

Started by TrOn, May 25, 2006, 09:02:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

LeaX

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

До этого у меня были изменены файлы по варианту natalina (см.выше)
Я их менять не стала обратно, просто доделала следующее:

1. Нашла файл Russian (/gallery/language/russian.php).
Он действительно был в кодировке UTF-8, но это не его название.
Открыла в блокноте. Файл-Сохранить как-(внизу выбрала в выпадающем списке вместо UTF-8 - ANSI)

2. admin.php - (/gallery/admin.php)
Куда писать строчку: 'Cyrillic (windows-1251)' => 'windows-1251' ?
Неясно.
Оказывается если ручками перегрести, то можно найти такую строчку:
'Cyrillic' => 'koi8-r'

Подозреваю, что нужно ее как раз и заменить на 'Cyrillic (windows-1251)' => 'windows-1251'
По крайней мере я так и сделала.

В Конфиге (кнопка слева в админке Галереи) поменяла кодировку на Cyrillic (windows-1251). В результате все добавленные ранее буквы отобразились крякозябрами.

3. Поиск search.inc.php - (/gallery/include/search.inc.php)

Находим это
$multibyte_charset = 'UTF-8, big5, shift_jis, euc-kr, gb2312';

Меняем на это:
$multibyte_charset = 'UTF-8, windows-1251, big5, shift_jis, euc-kr, gb2312';

4. keyword_select.php - (gallery/keyword_select.php)

Такой строчки у меня не нашлось
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Поэтому я вбила половину и нашла вот это
<meta http-equiv="Content-Type" content="text/html; charset=$charset" />

Заменила на
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

5. stat_details.php - (gallery/stat_details.php)
Анналогично

После всего проделанного имею Галерею в кодировке win-1251 явно, но:
-админ-панель в win-1251
-а вот все добавленные ранее названия категорий и материалов идут крякозябрами (UTF-8)

Ручками перебиваю название одного из альбомов - забивается в кодировке win-1251
Вопрос что делать с разделами/категориями? Видимо делать новые и перетаскивать в них старые альбомы.

natalina

Да, после изменения кодировки придется названия менять. Но зачем создавать и перетаскивать?! С помощью менеджера альбомов можно заменить названия:)   

Alex Revo

Все шаги выполнены правильно, но вы забыли о главном - переконвертировать базу данных. 

Для этого нужно сделать бекап и спрятать подальше, потом запустить charsetmgr.php и попробовать переконвертировать значения c UTF-8 в Win-1251
Не факт что все пройдет гладко, если база большая может не хватить времени на выполнение скрипта или ошибки какие вылезут, а может и получится.
Еще, если у вас есть какие-то записи в полях USER 1-5 - они останутся в старой кодировке, т.к. скрипт их не трогает (хотя может уже и исправили этот косяк, я давно делал)
Еще можно испробовать такой вариант, слить дамп базы и с помощью программы Штирлиц переконвертировать его в 1251 или просто открыть в блокноте, если русский текст читается нормально сохраните этот дамп в кодировке ANSI и попробуйте залить. Потом проверьте чтобы во всех сопоставлениях базы были только cp_1251

Если все получится то, у вас будет полностью рабочая галерея в кодировке 1251. Далее от версии к версии нужно просто будет править файлы и все.

В скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.

Andrey

Здравствуйте! Я сделал всё по инструкции LeaX, далее преобразовал все файлы базы данных из UTF-8 в win1251 с помощью Штирлица 4.0, все получилось великолепно но почему то файл cpg149_users.MYD не поддается конвертированию ни в какую, т.е. после декодирования этого файла сразу же Fatal error. Кто знает в чём проблемка? 

Alex Revo

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

Andrey

Quote from: Alex Revo on October 29, 2007, 08:31:00 AM
Вероятно потому, что при перекодировке нарушаются контрольные суммы зашифрованных паролей. Не трогайте эту таблицу и все будет хорошо или правьте только текстовые поля.
да, но ведь тогда русские имена в usermgr.php отображаются кракозябрями! вообщем у меня получилось всё переконвертировать успешно вот кроме этих Имен пользователей на русском языке! Есть ещё какие нибудь варианты? 

Alex Revo

Посмотрите чтобы для этих полей стояла кодировка cp_1251, должно быть нормально 

Andrey

Quote from: Alex Revo on October 29, 2007, 08:56:42 AM
Посмотрите чтобы для этих полей стояла кодировка cp_1251, должно быть нормально
простите великодушно но что то я не пойму где эти поля?
нашел в usermgr.php
if (utf_strlen($user_name) < 2) cpg_die(ERROR, $lang_register_php['err_uname_short'], __FILE__, __LINE__);
        if ($user_password && utf_strlen($user_password) < 2) cpg_die(ERROR, $lang_register_php['err_password_short'], __FILE__, __LINE__);
utf_ заменил на cp1251 ничего не изменилось..., или про какие поля вы говорили?

Также вы говорили "что при перекодировке нарушаются контрольные суммы зашифрованных паролей" но как мне тогда декодировать эти файлы cpg149_users.*** чтобы пароли не нарушились?  ???
Кто это делал обьясните пожалуйста как вы базу данных о пользователях перекодировали из utf8 в win1251? ???

Alex Revo

Попробуйте убрать только "utf_"

Я когда конвертировал базу не трогал вообще эту таблицу, потом просто вручную перебил испорченные логины. Все остальные данные, в т.ч. и пароли остались не тронутыми.

Andrey

Quote from: Alex Revo on October 29, 2007, 12:47:46 PM
Попробуйте убрать только "utf_"

Я когда конвертировал базу не трогал вообще эту таблицу, потом просто вручную перебил испорченные логины. Все остальные данные, в т.ч. и пароли остались не тронутыми.
убрал utf_
далее специально создал ещё логин на русском языке с русским паролем в CPG работающем в UTF-8, потом перенес эту базу в базу которую переконвертировал в win1251. Пробовал 2-мя способами исправлять Логины; первый в администрировании пользователей просто Каракули исправлял на Имя которое было забито ещё в базе UTF-8, строчку пароль оставлял пустым дабы не сбить его, начал заходить ОШИБКА попробуйте снова... вторым способом зашел через phpMyAdmin в эту табличку там исправил Каракули логина на Имя, пароль не трогал и тоже самое ОШИБКА попробуйте снова...  Причем код пароля абсолютно одинаков и в базе UTF и в базе win. Потом создал пользователя с Русским именем но с Англ. паролем и без проблем каракули логина исправил на имя и залогонился. В чем может быть проблема? Почему русский пароль не подходит хотя код пароля абсолютно одинков?

Alex Revo

Я буквально вчера сделал перевод галереи в кодировку 1251 на одном сайте, при этом таблицу пользователей не трогал совсем и файл usermgr не правил, все работает. Сделайте шаг назад, верните таблицу пользователей из бекапа и оригинальный файл. Попробуйте зайти в галерею, если не получится, пробуйте создать пользователя с русским именем и англ. паролем и т.д. О результатах напишите. 

Andrey

Quote from: Alex Revo on October 30, 2007, 07:21:55 AM
Я буквально вчера сделал перевод галереи в кодировку 1251 на одном сайте, при этом таблицу пользователей не трогал совсем и файл usermgr не правил, все работает. Сделайте шаг назад, верните таблицу пользователей из бекапа и оригинальный файл. Попробуйте зайти в галерею, если не получится, пробуйте создать пользователя с русским именем и англ. паролем и т.д. О результатах напишите.
таблицу пользователей возращал не раз, оставлял оригинальный файл, зайти могу под собой как админ т.к. у меня и логин и пароль англ. но другие(русские) Логины отображаются корявками всякими, думал просто поправить их, но после исправления логина он не пускает те логины у которых пароль был на русском а те у кого пароль на англ. те логины пускает! но ведь наверняка много у кого из пользователей пароль состоит из русских букв, так вот тогда они не смогут войти! 

Alex Revo

Этот вопрос можно решить волевым решением администратора.
Заведи пользователя с паролем "newpass" (к примеру), посмотри в базе его md5-код, поставь это значение всем пользователям.
Потом следай рассылку на мыло - в связи с обновлением галерелеи ваш пароль был сброшен до "newpass", пожалуйста зайдите в свой профиль галереи и назначьте новый АНГЛИЙСКИЙ пароль. Также в языковой файл стоит добавить примечение при регистрации, что нужно использовать только латиницу.
В общем это не решение, но выход.

Еще можешь попробовать вот что. В файле function.inc.php после:
function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
        if (!$result) {
                return false;
        }

добавь:
     $queryString = "SET NAMES cp1251";
     mysql_query($queryString);         

Может это поможет.

Andrey

да вроде у меня там это есть, только код чуть другой: 

function cpg_db_connect()
{
        global $CONFIG;
        $result = @mysql_connect($CONFIG['dbserver'], $CONFIG['dbuser'], $CONFIG['dbpass']);
mysql_query("SET NAMES cp1251", $result);
        if (!$result) {
                return false;
        }
        if (!mysql_select_db($CONFIG['dbname']))
                return false;
        return $result;
}

Ааа но неужели больше нет способов? а то у меня 150 пользователей как то опасно рассылать всем одинаковый пароль :o :(
Странно всё таки md5-код абсолютно одинаковый но если пароль на русском то не пускает а на англ. пускает(10 раз пробовал), где логика??

Alex Revo

Сложно сказать где логика, либо в базе, либо в файлах.
Если говорить не о решении, а возможном выходе, то посмотри еще раз своих юзеров. Я когда интегрировал галерею с сайтом сначала выкосил все мертвые души из галереи (все у кто не появлялся на сайте полгода или не загрузил ни одного фото), что значительно сократило их список. Потом на сайте повесь объявление, если у кого проблемы со входом, пусть пишут тебе и ты сбросишь пароль. 

Andrey

а реально ли с помощью charsetmgr конвертнуть не всю базу а только базу cpg14*_users? т.е. выбрать только её. Когда чарсет запускаю и прошу с UTF на win то он корректно видит все имена в табличке. Когда пробую конвертнуть он говорит что "Произошла ошибка при обращении к базе данных" но в этом способе он пробует ВСЮ базу конвертнуть. Нельзя ли как то у чарсета попросить конвернуть ТОЛЬКО базу users и может тогда он конвертнет и не скажет "Произошла ошибка при обращении к базе данных"??
P.S. Alex Revo как успехи по выпуску, в скором времени, своей сборки галереи специально в кодировке 1251  с настроеным бриджем к Джумла?  ;) Уж очень мечтаю настроить бридж: жумла-копер-пхпбб!  ::)

Andrey

да, нашел как попросить чарсет конвертнуть только users тоже самое говорит "Произошла ошибка при обращении к базе данных" :( 

LeaX

О ну надо же зря я тогда оказывается успокоилась (поскорее бы уже нормальная версия была, достало, откровенно говоря, в этих кодах рыться)
QuoteС помощью менеджера альбомов можно заменить названия:)
Менеджер альбомов меняет только названия альбомов, а я говорила про дерево категорий.
Уж не знаю кто как, а я так поняла, что там категории намертво вбиваются - никакой возможности редактирования именно категорий я не нашла.

QuoteДля этого нужно сделать бекап и спрятать подальше, потом запустить charsetmgr.php и попробовать переконвертировать значения c UTF-8 в Win-1251

Я эту pma абсолютно не понимаю и вообще боюсь трогать - если там еще что-нибудь перекосит... (((  :(

Там хоть бы кто 1 раз по-человечески написал какая все-таки кодировка, а то там чего-то все сразу понаписано
MySQL-кодировка:  UTF-8 Unicode (utf8)
А база данных cp1251_general_ci

При этом данные в таблицах открываются utf8, хотя забиты были в win-1251.
Но читается все нормально, русскими буквами и снаружи в внутри.
Фиг поймешь...

Вот например в прошлый раз я почему успокоилась с Галереей? После проделанных шагов  я тут же для проверки вбила один комментарий.
Он у меня нормально отобразился, в кодировке win-1251 снаружи, а в базе почему-то в UTF-8, но тоже нормальными русскими буквами, не крякозябрами.

Загружаю одну фотку. Пока я в админке Галереи, там нормальное название.
Открываю phpMyAdmin - ситуация повторяется как и с комментарием - тоже по-русски, но уже в UTF-8
Смотрю название сайта в разделе-альбоме - крякозябры.

Может раз оно внешне нормально отображается, то и не трогать? Загружать все фотки английскими буквами, пользователей тоже заставить (в правилах указать, что ник только латиницей)
Ну а комментарии нормально и идут - и слава Богу.
Зачем нужно все это ворошить?

QuoteВ скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.
А на эту штуку можно будет с нынешней перейти?




LeaX

Quote from: Alex Revo on October 23, 2007, 09:31:08 PM
В скором будущем я планирую выпустить свою сборку галереи специально в кодировке 1251  с настроеным бриджем к Джумла.
Позвольте полюбопытствовать, а скоро это уже наступило или... когда?  :) Планируется это дело все еще?
И еще... у меня вот Joostina. Там этот бриджик интересно будет подходить? Там ведь тоже 1251, но например с мостом в SMF кое-какие проблемы возникли. Интересно как тут оно наладится...   

awf

немного не в тему..
Общемировая тенденция, это переход на utf8. Таким образом, я хочу и сайт перевести на utf8.