|
|
|
| Доброго дня, не могу понять в чем дело, может кто подскажет?
В базе есть таблица с данными
tile - varchar(128) cp1251_general_ci
content - text cp1251_general_ci
Есть метод, который достает эти данные и конвертирует строку в utf-8 (если надо)
public function convert_to_utf($str, $force = false){
$code = mb_detect_encoding($str, Array("UTF-8", "CP-1251"));
if($code != "UTF-8"){
$str = mb_convert_encoding($str, "UTF-8", $code);
}
return ($force ? mb_convert_encoding($str, "UTF-8", 'CP-1251i').' OLD:'.$code : $str . ' OLD:'.$code);
}
|
вывожу на страницу
// $title, $content - значение из базы
print '<br>'.$this->convert_to_utf($title);
print '<br>'.$this->convert_to_utf($content);
print '<br>'.$this->convert_to_utf($content, 1);
|
выод:
заголовок OLD:UTF-8
???? OLD:UTF-8
тест OLD:UTF-8
проблема в том, что значение из поля title выводится нормально, а вот content dsdjlbnczзнаками вопроса. Если передать в метод второй аргумент, то выводится нормально, но при этом везде старая кодировка UTF-8
в чем может быть дело?
P.S. при подключении к базе прописал
mysql_query("SET CHARACTER SET 'utf-8'", $this->base);
mysql_query("SET NAMES 'utf-8", $this->base);
|
UPD
Решил
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $this->base);
|
| |
|
|