Русская локаль в 1.5.3

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Русская локаль в 1.5.3

Post by root »

Добрый день, набрел на данную CMS, понравилась, решил попробовать и сразу грабли - в новостях месяц отображается квадратиками ����. полез на ваш форум вроде нашел решение проблемы, но не помогает. Вернее помогает - месяц теперь пишется русскими буквами, но если пройти по ссылке "Подробнее" , то там заглавие новости будет уже в виде Ð�овоÑ�Ñ�Ñ�Ñ�ка . пробовал различные комбинации из действий описанных http://forum.cmsmadesimple.org/index.ph ... 903.0.html
http://forum.cmsmadesimple.org/index.ph ... 484.0.html
но становится только хуже.
сервер линуксовый, локаль насвозь utf-8, мускульная база соответственно тоже. Как я понял из вышеуказанных тем проблема кроется в нестыковке между локалью базы и CMS,  уважаемые гуру, подскажите решение, если оно существует.
Sonya

Re: Русская локаль в 1.5.3

Post by Sonya »

Месяц квадратиками из-за php локали, нужно поставить ru_RU.utf8. Стандартная значит другая стоит.

Так как у тебя заголовок новостей отображается, скорей всего дело было так: cравнение базы в utf-8, а соединение в стандартной кодировке MySQL(latin....) Все это работало до тех пор, пока ты не включил $cmsdb->Execute('set names utf8'); После этого все, чтобы было нормально, упало. Если ты только тестируешь, то просто перезапиши заголовок по-новой и все должно устаканиться.
Last edited by Sonya on Sun Mar 08, 2009 6:03 pm, edited 1 time in total.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Русская локаль в 1.5.3

Post by von-hamster »

Когда уже установил - сделать что либо бывает проблематично (но не невозможно)

1. проверь что отдает веб сервер, какую кодировку, если отличную от utf-8, то либо настраивай сервер, либо, если апач, htaccess
2. проверь БД: там действительно кодировка utf8, и то, что содержится в базе действительно utf8 содержание (то есть, например, в phpmyadmin текст отображается нормально)
3. проверь кодировку соединения  с БД, или set names utf8

Если на втором пункте в БД половину нормально, половина нет (что скорее всего у тебя) - то только экспортировать, сконвертировать и заново залить...

Если еще нет контента, а только проба цмс - удали все, сделай и проверь настройки, и заново установи...
root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Re: Русская локаль в 1.5.3

Post by root »

[root@bonus /]# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

у меня другой просто нет...   $cmsdb->Execute('set names utf8'); мне все-таки оставить? а то я ее уже опять закомментил.
root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Re: Русская локаль в 1.5.3

Post by root »

von-hamster wrote: Если еще нет контента, а только проба цмс - удали все, сделай и проверь настройки, и заново установи...
да вот переустанавливал, правда базу не убивал полностью - думал что при установке она перелопатится, но видимо нет...
Sonya

Re: Русская локаль в 1.5.3

Post by Sonya »

root wrote: $cmsdb->Execute('set names utf8'); мне все-таки оставить? а то я ее уже опять закомментил.
Если соединение, НЕ сравнение(!) идет в utf8, то можно закомментить. Но я на 99% процентов уверена по описываемым симптомам, что соединение у тебя не utf8 стоит. И в phpMyAdmin ты видишь кракозябры. Если так, то, как посоветовал господин Хомяк, проще всего перезалить базу, или если текста немного, то расскомментить и перезаписать текст в админке.
root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Re: Русская локаль в 1.5.3

Post by root »

после того как раскоментил $cmsdb->Execute('set names utf8');  все что ввожу на русском преобразуется в стройные ряды вопросительных знаков. Удаление текущей базы и переустановка с созданием новой поможет? И при переустановке
джентельменский набор, который решает все проблемы делать или нет:

    * 1. В config.php прописать $config['locale'] = 'ru_RU.UTF-8';
    * 2. В class.admintheme.inc.php в FixSpaces использовать preg_replace('/\s+/u'," ", $str)
    * 3. В incude.php раскомментировать строку $cmsdb->Execute('set names utf8');
    * 4. При создании БД, указать для неё сравнение utf8_general_ci и после этого устанавливать CMSMS;

кстати по второму пункту: данная рекомендация, как я понял, относилась более старым версиям, а как в этой? там две сторки с preg_replace('/\s+/u'," ", $str) - одна с /u, другая (ниже) без. опять же, как я понял, в линуксе это не надо делать. как все сложно...  :-\
Last edited by root on Sun Mar 08, 2009 6:51 pm, edited 1 time in total.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Русская локаль в 1.5.3

Post by ZYV »

cat /etc/mysql/my.cnf в студию. 100% у тебя в [mysqld] нет
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"
skip-character-set-client-handshake

lower_case_table_names=1
а SET NAMES UTF-8 ты перед установкой не включил...

Ну сколько же можно мусолить эту тему. Люди - предже чем к серверам подходить, ДОКИ читайте. Я же не занимаюсь ремонтом самолетов, ага? Вот подумайте чем бы закончились ваши полеты на самолетах, которые ремонтировал нейробиолог...
unsigned double ZYV;
root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Re: Русская локаль в 1.5.3

Post by root »

порадовали вы меня своим сравнением с нейрофизиололгами, почти в точку попали, почему почти? да потому, что ремонт самолетов это уже будет профессия, а мои подходы к "серверам" это хобби и от них (подходов) не зависит жизнь людей - этого добра мне по основной специальности хватает  ;D но это лирика, а вот физика уже интереснее:
указанных вами строк у мну в /etc/my.cnf действительно нет, по умолчанию в конфигурации этих строк нет даже в закомментированном виде.и надо сказать WordPress или Joomla! без них прекрасно работали в utf-8. мне эти строки  добавить?
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Русская локаль в 1.5.3

Post by von-hamster »

root wrote:     * 2. В class.admintheme.inc.php в FixSpaces использовать preg_replace('/\s+/u'," ", $str)
Это исправлено, можно не заморачиваться...
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Русская локаль в 1.5.3

Post by ZYV »

root, я вообще-то про себя говорил, ОК? Пока можете летать смело, у меня совесть ещё есть ;D

Wordpress и Joomla! делают по умолчанию SET NAMES UTF-8 при создании таблиц и там в дампе базы прописана кодировка и collation. А CMSMS нет, т.к. она поддерживает больше разных движков баз данных, в т.ч. и PG, а если хотеть портируемых схем такие вещи делать опасно. Если на схемы посмотрите там даже автоинкременты не используются...

В общем либо нормально настраивайте сервер на UTF-8, либо надо раскомментировать SET NAMES UTF-8, дропунить базу и переставить всё. При создании базы, кстати, нужно установить encoding и collation на всякий случай.

Объяснять как исправить сейчас долго...
unsigned double ZYV;
root
New Member
New Member
Posts: 6
Joined: Sun Mar 08, 2009 5:10 pm

Re: Русская локаль в 1.5.3

Post by root »

спасибо, ребята, за время на меня потраченное, но переустановка не помогла, так я сабж и не победил - что-то делаю не так,  так что удачи вам!
Sonya

Re: Русская локаль в 1.5.3

Post by Sonya »

Ахтунг - это баг!

В стандартной установке функция заголовок новости на самом деле ВСЕГДА преобразуется в кракозябры.
Виноватый: /lib/smarty/plugins/modifier.escape.php

Кодировка жестко прописана.

Code: Select all

function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
изменила на

Code: Select all

function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'utf-8')
Надо бы в forge это. Но ко мне, как к даме, там очень сурово относятся. Не разговаривають :)
User avatar
Robur
Forum Members
Forum Members
Posts: 86
Joined: Wed Mar 11, 2009 10:41 am

Re: Русская локаль в 1.5.3

Post by Robur »

Sonya wrote: Ахтунг - это баг!

--- skip ----

Надо бы в forge это. Но ко мне, как к даме, там очень сурово относятся. Не разговаривають :)
Соня, не надо это в форг... Лучше здесь пиши. То что они с тобой не разговаривают - они козы конечно, но если бы ты не писала здесь что и как исправить-поправить, что бы делали мы, чайники? (в частности мне не не зазорно о себе так писать, поскольку юзаю симпл всего неделю).

А вот за дельный совет - огромное спасибо! Поправил как показано - проблема умерла.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Русская локаль в 1.5.3

Post by ZYV »

Хммм, я тут с Калгаем имел недавно беседу :) он зачем-то хотел в 1.5.3 испортить транлитерацию на русский :) ладно, может в выходные выделю немножко времни зайти и побеседовать с ним на эту тему тоже...
unsigned double ZYV;
Post Reply

Return to “Russian - русский”