2010-11-10 4 views
0

У меня есть несколько проблем с поддержкой нескольких языков.Проблема с набором символов с youtube Gdata

Моего сайт использует кодировки ISO 8859 1

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

Когда я извлеченное название или содержание в китайском, то на дисплее будет обалденным текст

$doc = new DOMDocument; 
if (@$doc->load($url) === false) return; 
$title = $doc->getElementsByTagName("title")->item(0)->nodeValue; 
$content = $doc->getElementsByTagName("content")->item(0)->nodeValue; 

Однако, если я изменить заголовок UTF-8, он будет работать, однако из-за других сценариев я не смогу это сделать. любая идея как?

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

ответ

1

В вашем случае, utf8_decode() будет делать:

$title = utf8_decode($title); 
    $content= utf8_decode($content); 

Для более сложных преобразований из одного набора символов в другой, один, как правило, используют iconv() или mb_convert_encoding().

например.

$title = iconv("UTF-8", "iso-8859-1", $title); 
$content = iconv("UTF-8", "iso-8859-1", $content); 
+0

Примечание: Iconv() [Function.Iconv]: обнаружен нелегальный символ во входной строке –

+0

utf8_decode не будет отображать фанки-символ, но ????? –

+0

@damian, то ваши входящие данные, вероятно, не UTF-8. Проверьте, что кодировка удаленных URL указывает –

1

китайские символы не будут отображаться правильно, если ваш веб-страницы кодировка ISO-8859-1
выбор UTF-8 или gb2312, big5
затем преобразовать его с помощью mb_convert_encoding

mb_detect_order(array('utf-8', 'big5', 'gb2312')); 
$in_encoding = mb_detect_encoding($str); 
if (!$in_encoding || $in_encoding=='EUC-CN' || $in_encoding=='BIG-5') 
{ 
    $str = mb_convert_encoding($str, 'UTF-8'); 
} 
Смежные вопросы