我在多语言支持方面遇到了一些问题。
我的网站正在使用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" />
答案 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)
中文字符将无法正确显示
选择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');
}