使用youtube Gdata的charset问题

时间:2010-11-10 10:20:57

标签: php xml

我在多语言支持方面遇到了一些问题。

我的网站正在使用charset 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" />

2 个答案:

答案 0 :(得分:1)

在您的情况下,utf8_decode()会执行:

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

对于从一个字符集到另一个字符集的更复杂转换,通常会使用iconv()mb_convert_encoding()

e.g。

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

答案 1 :(得分: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');
}