Русский English Deutsch Українська Қазақша

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

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

Вы не вошли.

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

Wolverine
Модератор
Откуда: Домодедово
Здесь с 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

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

\engine\install.php

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


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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

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

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

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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

#7 2012-04-11 23:48:41

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   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 00: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 00:36:55

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

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

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

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

Вне форума

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

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

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

qwest пишет:

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

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

Вне форума

#12 2012-04-12 22: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-12 23:53:05)

Вне форума

#13 2012-04-12 23:59:39

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   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 00:12:38

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

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

qwest пишет:

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

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

Вне форума

#16 2012-04-13 01: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 02:17:15

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

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

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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

#20 2012-04-14 06: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 22:27:02

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

Вне форума

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

ROZARD
Модератор
Откуда: Россия, Астрахань
Здесь с 2008-10-13
Сообщений: 1,523
Рейтинг :   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 12: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 13:24:26

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

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

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

Вне форума

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

qwest
Участник
Здесь с 2010-07-03
Сообщений: 96
Рейтинг :   
Сайт

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

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

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

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.019 сек, 7 запросов выполнено - Использовано памяти: 613.12 Кбайт (Пик: 650.12 Кбайт) ]