Ломается кодировка в description

В meta description не отображаются буквы «х» и «р»

� ешил, по� ожие, самы�


Кодировки менял utf8_general_ci и utf8_bin. В чём может быть дело?

5 комментариев

avatar
У меня тоже самое, но только с одной буквой «х». Кто-нибудь нашел решение.
avatar
У вас очевидно база в cp-1251, а информация в неё добавляется в utf-8
avatar
у меня такая же проблема.
кроме всего прочего ещё и на главной в метаданных все русские символы стали знаками вопроса. кодировка базы правильная что делать?
  • yzy
  • 0
avatar
UP темы… У меня такая же проблема… Решения не могу найти… Базе выставлял кодировку UTF-8, тип таблицам ставил InnoDB… ничего не помогает…
avatar
Тоже озадачился этой проблемой, надоело что поисковики видят эти кракозябрики.

Сначала думал дело в настройках кодировок или базе, оказалось совсем иначе.

В файле function.php есть функция:
function func_text_words($sText,$iCountWords) {
	$sText=str_replace("\r\n",'[<rn>]',$sText);
	$sText=str_replace("\n",'[<n>]',$sText);
		
	$iCount=0;
	$aWordsResult=array();
	$aWords=preg_split("/\s+/",$sText);	
	for($i=0;$i<count($aWords);$i++) {
		if ($iCount>=$iCountWords) {
			break;
		}
		if ($aWords[$i]!='[<rn>]' and $aWords[$i]!='[<n>]') {
			$aWordsResult[]=$aWords[$i];
			$iCount++;
		}
	}
	$sText=join(' ',$aWordsResult);	
	$sText=str_replace('[<rn>]'," ",$sText);
	$sText=str_replace('[<n>]'," ",$sText);	
	return $sText;	
}


В ней строчку:
$aWords=preg_split("/\s+/",$sText);

Меняем на:
$aWords=preg_split("/\s+/u",$sText);


preg_split — некорректно отрабатывает без параметра u

После этого кракозябры исчезнут.

У себя делал на 3 версии LS, но функция в том же виде и в 4 версии, так-что может будет ещё кому полезна.

Пологаю проблема имеет определённую зависимость от хостинга, или от версии PHP и проявляться может не всегда.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.