有一个简单的PHP脚本解析XML文档并显示item的属性(属性是俄语,XML文件使用“utf-8”charset):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
//header('Content-Type: text/html; charset=utf-8');
$xml=simplexml_load_file('output.xml');
echo $xml['moves'];
?>
</body>
</html>
我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<game moves="Папа">
<a attr="2">123</a>
</game>
使用此代码,我只看到“Папа而不是”Папа“俄文。但如果我删除所有HTML并通过header()PHP方法设置charset它将正常工作!我该如何解决?< / p>
答案 0 :(得分:0)
当创作文档是HTML或XHTML时,添加Doctype声明很重要。它可能会解决您的问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
答案 1 :(得分:0)
如果您不确定,请务必仔细检查。让我们这样做。
首先检查XML文件是否实际为UTF-8 encoded。
其次,最后检查您生成的HTML实际上是UTF-8编码。
以上是这两个检查的例子:
<?php
ob_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
$buffer = file_get_contents('output.xml');
if (!preg_match('//u', $buffer)) {
throw new Exception("XML file is not UTF-8 encoded!");
}
$xml = simplexml_load_string($buffer);
echo $xml['moves'];
?>
</body>
</html>
<?php
$buffer = ob_get_clean();
if (!preg_match('//u', $buffer)) {
throw new Exception("HTML is not UTF-8 encoded!");
}
?>