Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

rss

Вы не зашли.

Объявление

  • Список
  •  » Флейм
  •  » Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

#1 2012-04-11 04:56:42

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Собственно переделал движек на UTF-8 но возникла одна проблема при установке системы все таблицы создаются в UTF-8 а
таблица комментариев упорно создается в ср1251.
Уважаемые администраторы или кто знает подскажите пожалуйста в каком файле прописать кодировку что бы по умолчанию таблица комментариев создавалась в UTF-8.
А так в целом вроде все работает нормально только есть слова не вынесенные в ленгфайл.

Неактивен

 

#2 2012-04-11 13:04:32

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

\engine\install.php

Код:

$charset = $charsetEngine?' default charset=cp1251':'';


if ($SUPRESS_CHARSET) { $dbCreateString = str_replace('default charset=cp1251','',$dbCreateString); }

Неактивен

 

#3 2012-04-11 22:15:11

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

В обоих строках стоит utf8 но одна таблица комментариев упорно создается в cp1251. Немогу найти где прописано.

Неактивен

 

#4 2012-04-11 22:43:18

ROZARD
Модератор
Откуда: Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1523
Рейтинг :   82 
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Нужно ещё в mysql.class.php поправить строчку

Неактивен

 

#5 2012-04-11 22:45:17

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Нашел оказывается после установки основной БД отдельно создается БД для плагинов в файле engine/includes/inc/extrainst.inc.php
там то и была указана кодировка ср1251.

Неактивен

 

#6 2012-04-11 23:47:49

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Теперь комментарии не заработали они упорно пытаются добавляться в ср1251. На английском добавляются на русском добавляется пустой комментарий.
Я так понимаю при добавлении русский выводится крякозяблицей, а обработчик честно вычищает все это как недопустимые символы.
Вот застопорился немогу понять где жестко прописать UTF-8.

Неактивен

 

#7 2012-04-12 00:48:41

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

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

В плагине comments - открой файл /engine/plugins/comments/inc/comments.add.php и убери везде вызов функции convert() - именно она из UTF-8 преобразует в Win1251.

Неактивен

 

#8 2012-04-12 01:15:10

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Заметил еще одни грабли при публикации новостей на китайском (вот где настоящая проверка UTF-8) URLы выводятся вида:  http://ngcms.site/none/-.html
режутся все символы. Что чревато формированием одинаковых URL, я знаю в китайских CMS URLы формируются вида: http://ngcms.site/none/3333.html
т.е. через номер. Пока проверял китайский но грабли будут и с другими языками. Если с кириллицей конструкции вида 'с'='s' сделать не накладно то для иероглифов не подойдет.
'

Неактивен

 

#9 2012-04-12 01:36:55

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Убрал вызов функции convert() комментарии стали добавляться но при выводе крякозяблица. Нажимаю обновить страницу в браузере становится все нормально. Если я правильно понял вся беда из за AJAX он обрабатывает все в ср 1251 или нет?. Прошу совета.

Неактивен

 

#10 2012-04-12 01:46:21

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest, вот с китайским ты словил первый баг - в наименовании альт. имени smile
Но с генерацией URL'ов всё проще - можно перейти на использование ID новости в URL'е, тогда проблем не будет.

В "управление форматом ссылок" находишь строку "Отображение полной новости" и меняешь в ней {altname} на {zid} - получишь ID с ведущими нулями.

Неактивен

 

#11 2012-04-12 01:47:32

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest написал:

Убрал вызов функции convert() комментарии стали добавляться но при выводе крякозяблица. Нажимаю обновить страницу в браузере становится все нормально. Если я правильно понял вся беда из за AJAX он обрабатывает все в ср 1251 или нет?. Прошу совета.

Наоборот - AJAX работатет только в UTF8 и двиг принудительно делает конвертацию Win1251 => UTF8.
В файле comments.php найди и убери вызов функции iconv()

Неактивен

 

#12 2012-04-12 23:37:41

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Подскажите пожалуйста как правильно в файле comments.php убрать вызов функции iconv()

1.

Код:

        $output = array(
            'status'    => 1,
            'rev'        => intval(pluginGetVariable('comments', 'backorder')),
            'data'        => iconv('Windows-1251', 'UTF-8', comments_show($SQLnews['id'], $commentId, $SQLnews['com']+1, $callingCommentsParams))
        );

2.

Код:

if ($_REQUEST['ajax']) {
        $output['data'] = iconv('Windows-1251', 'UTF-8', $output['data']);
        $template['vars']['mainblock'] = json_encode($output);

3.

Код:

        $output = array(
            'status'    => 1,
            'rev'        => intval(pluginGetVariable('comments', 'backorder')),
            'data'        => iconv('Windows-1251', 'UTF-8', comments_show($SQLnews['id'], $commentId, $SQLnews['com']+1, $callingCommentsParams))
        );

У меня небольшая заминка возникает при выводе сообщения об ошибке вот пытаюсь понять из за чего или я неправильно убираю iconv() или из за того что файл tpl в ср1251

Отредактированно qwest (2012-04-13 00:53:05)

Неактивен

 

#13 2012-04-13 00:59:39

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Еще вопрос по языковым переменным планируется ли вынести все что не вынесено в языковые файлы.

Неактивен

 

#14 2012-04-13 01:11:51

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest написал:

Подскажите пожалуйста как правильно в файле comments.php убрать вызов функции iconv()

1.

Код:

        $output = array(
            'status'    => 1,
            'rev'        => intval(pluginGetVariable('comments', 'backorder')),
            'data'        => comments_show($SQLnews['id'], $commentId, $SQLnews['com']+1, $callingCommentsParams)
        );

2.

Код:

if ($_REQUEST['ajax']) {
        $output['data'] = $output['data'];
        $template['vars']['mainblock'] = json_encode($output);

3.

Код:

        $output = array(
            'status'    => 1,
            'rev'        => intval(pluginGetVariable('comments', 'backorder')),
            'data'        => comments_show($SQLnews['id'], $commentId, $SQLnews['com']+1, $callingCommentsParams)
        );

У меня небольшая заминка возникает при выводе сообщения об ошибке вот пытаюсь понять из за чего или я неправильно убираю iconv() или из за того что файл tpl в ср1251

Неактивен

 

#15 2012-04-13 01:12:38

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest написал:

Еще вопрос по языковым переменным планируется ли вынести все что не вынесено в языковые файлы.

Да.
И если твой эксперимент окажется удачен, то эта задача станет среди первых.

Неактивен

 

#16 2012-04-13 02:08:56

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

В спешке третий блок кода написал неправильно он вот такой из за него и заминка что то не выходит у меня правильно убрать в нем iconv()


3.

Код:

$output = array(
                'status' => 0,
                'data' => iconv('Windows-1251', 'UTF-8', $tpl -> show('comments.error'))
            );

Неактивен

 

#17 2012-04-13 03:17:15

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest, тебе надо убрать iconv('Windows-1251', 'UTF-8', и в конце )

Неактивен

 

#18 2012-04-13 04:42:47

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Я так пробовал но у меня вместо сообщения об ошибке при неправильной отправке комментария выводится надпись "null". 
Я подумал что я что то делаю неправильно, значит надо где то дальше искать или всетаки здесь ошибка?
Вроде уже все остальное нормально только с комментами неполучается.

Отредактированно qwest (2012-04-13 04:45:22)

Неактивен

 

#19 2012-04-13 22:31:40

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Нашел еще один баг когда неправильно добавляю новость (без заголовка) выдается ошибка это нормально, но весь текст в текстовых полях становится
крякозябликами.
Я вот подумал может есть желающие посмотреть я файлы выложу.
Немогу победить два бага:
1. Неправильный вывод сообщения об ошибке в комментариях.
2. При добавлении новости без заголовка текст преобразуется в крякозяблицу.

Неактивен

 

#20 2012-04-14 07:48:20

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Прошу помочь еще по одной строке правильно убрать iconv()

1.

Код:

    $result = array();
    foreach ($data as $k => $v) {
        $result[iconv($direction?'UTF-8':'Windows-1251', $direction?'Windows-1251':'UTF-8', $k)] = is_array($v)?arrayCharsetConvert($direction, $v):iconv($direction?'UTF-8':'Windows-1251', $direction?'Windows-1251':'UTF-8', $v);
    }
    return $result;
}

Неактивен

 

#21 2012-06-14 23:27:02

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Ответ на вопрос в посте #20 актуален.

Неактивен

 

#22 2012-06-15 08:43:55

ROZARD
Модератор
Откуда: Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1523
Рейтинг :   82 
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Код:

$result = array();
foreach ($data as $k => $v){
    $result[$k] = $v;
}
return $result;

Стоит вообще удалить function arrayCharsetConvert($direction, $data) { и сделать всё без неё.

Неактивен

 

#23 2012-06-17 13:34:10

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

ROZARD написал:

Код:

$result = array();
foreach ($data as $k => $v){
    $result[$k] = $v;
}
return $result;

Стоит вообще удалить function arrayCharsetConvert($direction, $data) { и сделать всё без неё.

Просто удалить?

Неактивен

 

#24 2012-06-17 14:24:26

ROZARD
Модератор
Откуда: Россия, Астрахань
Зарегистрирован: 2008-10-13
Сообщений: 1523
Рейтинг :   82 
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

qwest, Ну не просто))
Для тебя нет смысла её использовать раз у тебя и так всё в utf-8

Неактивен

 

#25 2012-10-22 22:06:59

qwest
Пользователь
Зарегистрирован: 2010-07-03
Сообщений: 96
Рейтинг :   
Профиль  Вебсайт

Re: Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Версия UTF-8 может кому нужна:     ngcms.zip

Качаем тестим отписываемся.

Неактивен

 
  • Список
  •  » Флейм
  •  » Переделал NGCMS в кодировке UTF-8 но есть небольшие проблемы.

Board footer

Powered by FluxBB

[ Generated in 0.025 seconds, 32 queries executed ]