2010-11-10 6 views
0

J'ai quelques problèmes avec le support multi-langue.Problème de charset avec youtube Gdata

Mon site utilise charset iso 8859 1

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

Quand je le titre ou le contenu récupéré est en chinois, l'affichage sera texte branché

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

Cependant, si je change ma tête pour UTF-8, cela fonctionnera, mais en raison d'autres scripts je ne serai pas capable de le faire. une idée comment?

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

Répondre

1

Dans votre cas, utf8_decode() fera:

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

Pour les conversions plus complexes à partir d'un jeu de caractères à l'autre, on utilise habituellement iconv() ou mb_convert_encoding().

par exemple.

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

Avis: Iconv() [Function.Iconv]: Détecté un caractère illégal dans la chaîne d'entrée –

+0

utf8_decode n'affichera charc funky, mais ????? –

+0

@damian alors vos données entrantes ne sont probablement pas UTF-8. Vérifiez que le codage de l'URL distante spécifie –

1

caractères chinois ne seront pas afficher correctement si votre page web est charset iso-8859-1
choix UTF-8 ou gb2312, big5
puis le convertir en utilisant 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'); 
} 
Questions connexes