Обновление до 2.0 RC1

Автор Vladimir-s, 06 февраля 2009, 00:22:34

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Vladimir-s

Ситуация, живой рабочий форум, установленный првавильно без кривизны, версия 2.0 бета, при апгрейде до RC1 кодировка UTF8 умирает "��� �����" перезалив на FTP старые темплейты и темы ( на уже изменённую БД) форум отображается во всём великолепии, подскажите где поправить чтобы после апдейта кодировка читалась нормально.

Vladimir-s

Сам и отвечу на вопрос, темплейты и прочие тут не причём, правим Settings.php в корне, после установки видим вариант:

# Make sure the paths are correct... at least try to fix them.
if (!file_exists($boarddir) && file_exists(dirname(__FILE__) . '/agreement.txt'))
   $boarddir = dirname(__FILE__);
if (!file_exists($sourcedir) && file_exists($boarddir . '/Sources'))
   $sourcedir = $boarddir . '/Sources';
if (!file_exists($cachedir) && file_exists($boarddir . '/cache'))
   $cachedir = $boarddir . '/cache';
   
?>


Дописываем одну строчку:

# Make sure the paths are correct... at least try to fix them.
if (!file_exists($boarddir) && file_exists(dirname(__FILE__) . '/agreement.txt'))
   $boarddir = dirname(__FILE__);
if (!file_exists($sourcedir) && file_exists($boarddir . '/Sources'))
   $sourcedir = $boarddir . '/Sources';
if (!file_exists($cachedir) && file_exists($boarddir . '/cache'))
   $cachedir = $boarddir . '/cache';
   
$db_character_set = 'utf8';
?>

Bic

#2
У меня вопрос. Форум в кодировке UTF8, все таблицы базы данных в utf8_general_ci, строчка $db_character_set = 'utf8'; в Settings.php присутствует. После обновления до 2.0 RC1 все нормально, только один косяк - в календаре буквы названия дня недели отображаются кракозяблами �. В чем причина?

Kerlen

#3
И у меня точно такая проблема. Кодировка UTF8, обновлял с 1.1.8 до 2.0 RC1.

При переключении на windows-1251 проблема исчезает. Однако требуется именно UTF8...

Может кто подскажет, в каком именно языковом файле искать злосчастные буквы :)?

Kerlen

Ага, нашёл: index.russian-utf8.php

$txt['days'] = array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота');


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

$txt['days'] = array('Vоскресенье', 'Pонедельник', 'Vторник', 'Sреда', '4етверг', 'Pятница', 'Sуббота');


Непонятно лишь почему написанные в правой части страницы календаря слова в UTF-8 отображаются корректно, а их же первые буквы в левой части отображаются явно в другой кодировке ??? ? Лично я дальше остановился, так как в ПХП не понимать...

digger®

Цитата: Kerlen от 04 марта 2009, 00:21:01
Ага, нашёл: index.russian-utf8.php

$txt['days'] = array('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота');


В таблице используются первые буквы дней недели - если их заменить на латинские, то они появляются вместо кракозябров. Непонятно лишь почему написанные в правой части страницы календаря слова в UTF-8 отображаются корректно, а их же первые буквы в левой части отображаются явно в другой кодировке ??? ? Лично я дальше остановился, так как в ПХП не понимать...

Это баг похоже. Русская буква в UTF8 кодируется двумя байтами, а тут когда обрезает, режет один байт.

Kerlen

Упс... И что делать-то теперь? :)


digger®

Цитата: Kerlen от 04 марта 2009, 00:31:13
Упс... И что делать-то теперь? :)
Если по быстрому подправить, то в Calendar.template.php

<td class="titlebg2" width="14%" align="center" ', $calendar_data['size'] == 'small' ? 'style="font-size: x-small;"' : '', '>', !empty($calendar_data['short_day_titles']) ? substr($txt['days'][$day], 0, 1) : $txt['days'][$day], '</td>';

поменять на

<td class="titlebg2" width="14%" align="center" ', $calendar_data['size'] == 'small' ? 'style="font-size: x-small;"' : '', '>', !empty($calendar_data['short_day_titles']) ? substr($txt['days'][$day], 0, 2) : $txt['days'][$day], '</td>';

Bic

digger, спасибо, помогло, поменял в Calendar.template.php ...day], 0, 1)...  на ...day], 0, 2)... и все стало нормально.

Kerlen


Badman

Спасибо :) я и не замечал что там небольшой баг :)

Anna

Спасибо большое помогло :) :coolsmiley:

digger®

Цитата: Bic от 03 марта 2009, 19:03:28
У меня вопрос. Форум в кодировке UTF8, все таблицы базы данных в utf8_general_ci, строчка $db_character_set = 'utf8'; в Settings.php присутствует. После обновления до 2.0 RC1 все нормально, только один косяк - в календаре буквы названия дня недели отображаются кракозяблами �. В чем причина?

Правильный вариант исправления такой:

В Calendar.template.php


function template_show_month_grid($grid_name)
{
global $context, $settings, $options, $txt, $scripturl, $modSettings;


поменять на


function template_show_month_grid($grid_name)
{
global $context, $settings, $options, $txt, $scripturl, $modSettings, $smcFunc;   


и


<td class="titlebg2" width="14%" align="center" ', $calendar_data['size'] == 'small' ? 'style="font-size: x-small;"' : '', '>', !empty($calendar_data['short_day_titles']) ? substr($txt['days'][$day], 0, 1) : $txt['days'][$day], '</td>';


поменять на

<td class="titlebg2" width="14%" align="center" ', $calendar_data['size'] == 'small' ? 'style="font-size: x-small;"' : '', '>', !empty($calendar_data['short_day_titles']) ? $smcFunc['substr']($txt['days'][$day], 0, 1) : $txt['days'][$day], '</td>';