Спасибо
Столкнулся ещё с проблемой вывода русских датв Дитто.
setlocale(LC_ALL, ’rus_rus’); или setlocale(LC_ALL, ’Russian’); меняют кодировку на Windows 1251.
Всякие махинации с setlocale(LC_ALL, ’Russian.UTF8’); setlocale(LC_ALL, ’Russian.UTF-8’); setlocale(LC_ALL, ’ru_RU.UTF8’); так и не дали никакого результата...
поиском не нашёл...
Вообщем, надо "10 июн 2007" в utf8. Оно сейчас в cp1251. Есть функция для преобразования
http://php.net/convert_cyr_string Но как её использовать в этом случае я не понял... Ведь ни php ни сниппеты из чанок вызывать нельзя...
ОТРЕДАКТИРОВАНО ПОЗДНЕЕ:
Вообщем, я вставил setlocale(LC_ALL, ’rus_rus’); первой строчкой в index.php, а в самой ModX сделал сниппет на базе информации с php.net и в чанке его просто вызвал [[date? &str=`[+createdon:date=`%d-%b-%y %H:%M`+]`]]
моя ошибка состояла в том, что я попылатся вызвать как [!date? ... а так нельзя делать
код сниппета, перегоняющий cp1251 в uft8
$encode = "";
for ($ii=0;$ii<strlen($str);$ii++) {
$xchr=substr($str,$ii,1);
if (ord($xchr)>191) {
$xchr=ord($xchr)+848;
$xchr="&#" . $xchr . ";";
}
if(ord($xchr) == 168) {
$xchr = "Ё";
}
if(ord($xchr) == 184) {
$xchr = "ё";
}
$encode=$encode . $xchr;
}
return $encode;
На Linux|UNIX я думаю, достаточно было бы просто setlocale(LC_ALL, ’ru_RU.UTF8’); в index.php
Поправьте меня, если я в чём-то ошибься, плиз...