Кодировка названия месяца

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

Moderators: iturbay, wdwp

User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Кодировка названия месяца

Post by netoya »

Поставил 1.5.4 но месяц в новостях идет как во фронтенде так и в админке при попытке выборе даты новости отображается вопросом, будто дело в кодировке, проверил config.php и include.php там везде указано utf-8, сами языковые файлы где бы хранились названия месяцев я не нашел, они что в базе?
Остальное все корректно отображается по русски.
Sonya

Re: Кодировка названия месяца

Post by Sonya »

Вывод идет через php locale. В зависимости от системы и установленных локалях на ней можно попробовать:

Code: Select all

$config['locale'] = 'ru_RU';
Если сайт на UTF, то

Code: Select all

$config['locale'] = 'ru_RU.UTF8';
Вот тут еще почитать можно http://forum.cmsmadesimple.org/index.ph ... 155.0.html
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Кодировка названия месяца

Post by Il_Burbero »

Еще вот может помочь:
http://forum.cmsmadesimple.org/index.php/topic,13500.msg66700.html#msg66700

Вообще этот html_select_date.php странный, то нормально работает, то не работает, то работает только по английски :)
User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Re: Кодировка названия месяца

Post by netoya »

Sonya, если я правильно понял то это надо было добавлять в config.php? я добавил туда, но ситуация не изменилась.

Il_Burbero, по рекомендациям из ссылки, происходит следующее, вместо вопросиков на фоне ромбиков, названия месяцев стали непонятым шрифтом отображаться опять же не читаемым.


Как временное решение в админке поставил значение strftime на %d.%m.%Y
но мне кажется это не правильно когда чего-то работает не так как задумано
Attachments
2009-04-15_123335.jpg
Last edited by netoya on Wed Apr 15, 2009 8:42 am, edited 1 time in total.
Sonya

Re: Кодировка названия месяца

Post by Sonya »

netoya wrote: но мне кажется это не правильно когда чего-то работает не так как задумано
Нужно больше информации, на какой оси сайт установлен, в какой кодировке страница отображается? Много вариантов, почему может не работать.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Кодировка названия месяца

Post by Il_Burbero »

html_select_date лежит в lib/smarty/plugins под названием function.html_select_date.php
И вот так он вызывается в модуле Новости:

Code: Select all

	
<div class="pageoverflow">
<p class="pagetext">{$postdatetext}:</p>
<p class="pageinput">{html_select_date prefix=$postdateprefix time=$postdate start_year="-10" end_year="+15"} {html_select_time prefix=$postdateprefix time=$postdate}</p>
</div>
Возможно нужно просто добавить какой то модификатор самой функции html_select_date (в начале файла они все прописаны  либо модификатор Смарти http://www.smarty.net/manual/ru/language.modifiers.php
User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Re: Кодировка названия месяца

Post by netoya »

OS Linux
Server Apache

база в UTF8, а как выводит я уж не знаю, вроде тоже в UTF.
только заметил, что когда наводишь курсор на заголовок новости, то всплывающая подсказка также идет в неверной кодировке.
phpinfo

Это мой первый опыт создания сайта на ЦМС.

Il_Burbero, к сожалению мне уж самому точно не додуматься какой модификатор туда поставить.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Кодировка названия месяца

Post by Il_Burbero »

Il_Burbero, по рекомендациям из ссылки, происходит следующее, вместо вопросиков на фоне ромбиков, названия месяцев стали непонятым шрифтом отображаться опять же не читаемым.
! вот значит нужно рыть в этом направлении. Где то у вас перебивается кодировка при обработке строк.
Для начала попробуйте еще в файле .htaccess прописать вот эти фишки:

Code: Select all

AddDefaultCharset utf-8
AddLanguage ru-RU .html .htm .css .js .php
DefaultLanguage ru-RU
Вообще надо проверить чтобы ваш хост был полностью utf - т.е. в заголовке от него шел utf и в БД везде был utf.

Еще можно попробовать

Code: Select all

$month_names[$i] = iconv('?????', 'UTF-8', strftime($month_format, mktime(0, 0, 0, $i, 1, 2000)));
вместо utf8_encode

Code: Select all

$month_names[$i] = utf8_encode(strftime($month_format, mktime(0, 0, 0, $i, 1, 2000)));
????? это выдаваемая кодировка строки, определить ее можно просто - на страницы где кракозяблики в браузере перебираете кодировки (не обращая внимания на всю страницу) пока кракозяблики не станут нормальными буквами, запоминаете кодировку и вставляете ее в ?????
User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Re: Кодировка названия месяца

Post by netoya »

Итак кодировка названия месяца во фронт энде оказалась ISO-8859-5, в админ панели модуля новости перебор кодировок отображения месяца по человечески так результата не дал.
Также в фронт энде идет вывод
{$entry->title|escape:htmlall}
и то что выделено жирным так и остается в непонятной кодировке и также методом перебора заставить этот текст отображаться читабельно не получилось.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Кодировка названия месяца

Post by ZYV »

Вообще это говорит о том, что у хостинга проблемы с локалью. В ssh выпонить locale -a | grep ru и прописать в конфиг CMS. Не помогает - значит PHP как модуль Apache, если хостинг - shared - уходить, если свой - админ должен настроить FCGI/suexec.
unsigned double ZYV;
User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Re: Кодировка названия месяца

Post by netoya »

ZYV к сожалению доступа по SSH нет
методом тыка понял что вся проблема в кодировке тут
{$entry->title|escape:htmlall}
заменив на
{$entry->title} кодировка сразу стала нормально отображаться на страницах сайта.
Po6oT

Re: Кодировка названия месяца

Post by Po6oT »

кстати, тоже сталкивался с подобной проблемой... в случае использования |escape:htmlall отображались кракозябры... без этого все в порядке. Объясните кто-нибудь что это вообще такое и зачем оно нужно?
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Кодировка названия месяца

Post by ZYV »

./lib/smarty/plugins/modifier.escape.php:

function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')

Теперь всё понятно?
unsigned double ZYV;
User avatar
netoya
New Member
New Member
Posts: 6
Joined: Wed Apr 15, 2009 5:04 am

Re: Кодировка названия месяца

Post by netoya »

Спасибо
Melvinxx
New Member
New Member
Posts: 3
Joined: Thu May 28, 2009 9:42 pm

Re: Кодировка названия месяца

Post by Melvinxx »

Сорри за некропостинг, мне вот ничего не понятно ((

'ISO-8859-1, оно же CP1252... а весь сайт как бы на Юникоде... Зачем же делать заголовки на другом стандарте?

Короче, escape:htmlall в тайтле удалил, пошел читать про кодировки.. но буду очень признателен, если объясните, вчем тут дело...
Post Reply

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