проблемма с русским языком в обрезаных заголовках

Статус
В этой теме нельзя размещать новые ответы.
арррр...
ничего не помогло.
я уже неделю наверное с этим скриптом занимаюсь любовью - даже не знаю что еще с ним можно сделать...
 
арррр...
ничего не помогло.
я уже неделю наверное с этим скриптом занимаюсь любовью - даже не знаю что еще с ним можно сделать...

Тоже с этим мучаюсь. Знаю что 100% это не БД. Не пробовал обратиться к разработчикам? :read:
 
у моего товарища где-то есть самописный код. для другого двига, у него такая же проблемма была.
ток я пока не разобрался куда его вставить и как..)
 
Как сделаешь - отпишись в аську =)
 
в асю не обещаю, тут точно отпишусь.
 
Итак, я немного покопался и выяснил... :)чтобы небыло "кракозяб" в php melody в папке include откройте файл functions.php
Найдите 70-ю строку
if (strlen($str_to_count) <= $lenght)
и замените это на
if (mb_strlen($str_to_count, "UTF-8" ) <= $lenght)

и все готово ;)
 
почему-то не работает этот метод.
может еще что-то где-то должно быть поменяно?
 
а, еще, забыл после 25 строки вставьте
@mysql_query("SET @@global.sql_mode='MYSQL40'");

И все, больше ничего.... У меня все замечательно!
P.S. У меня версия 1,6,1
 
у меня 1.6 и у меня не хочет работать...
если обновлять версию, там ведь ниче у меня не полетит?
 
Вставь эту функцию
Код:
function utf8_strlen($s)
{
return preg_match_all('/./u', $s, $tmp);
}
function utf8_substr($s, $offset, $len = 'all')
{
if ($offset<0) $offset = utf8_strlen($s) + $offset;
if ($len!='all')
{
if ($len<0) $len = utf8_strlen($s) - $offset + $len;
$xlen = utf8_strlen($s) - $offset;
$len = ($len>$xlen) ? $xlen : $len;
preg_match('/^.{' . $offset . '}(.{0,'.$len.'})/us', $s, $tmp);
}
else
{
preg_match('/^.{' . $offset . '}(.*)/us', $s, $tmp);
}
return (isset($tmp[1])) ? $tmp[1] : false;
}
и замени strlen на utf8_strlen
далее еще функция
Код:
function utf8_strpos($haystack, $needle, $offset = 0)
{
# get substring (if isset offset param)
$offset = ($offset<0) ? 0 : $offset;
if ($offset>0)
{
preg_match('/^.{' . $offset . '}(.*)/us', $haystack, $dummy);
$haystack = (isset($dummy[1])) ? $dummy[1] : '';
}
# get relative pos
$p = strpos($haystack, $needle);
if ($haystack=='' or $p===false) return false;
$r = $offset;
$i = 0;
# calc real pos
while($i<$p)
{
if (ord($haystack[$i])<128)
{
# ascii symbol
$i = $i + 1;
}
else
{
# non-ascii symbol with variable length
# (handling first byte)
$bvalue = decbin(ord($haystack[$i]));
$i = $i + strlen(preg_replace('/^(1+)(.+)$/', '\1', $bvalue));
}
$r++;
}
return $r;
}
и замени strpos на utf8_strpos
все должно будет заработать. Функции вставляй ранее вызова регулярных выражений а mb_ не работает скорее всего из-за поддержки в самом PHP.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху