我正在尝试阅读包含™
(™)的XML文档,但出于某种原因,无论我尝试什么,它总是显示为¢。
例如:
$xml = new SimpleXMLElement('<item><title>test</title></item><item><title>™</title></item>');
foreach ($xml->item AS $item)
{
echo $item->title . "<br />";
}
Results in:
test
â„¢
为了清楚起见,我不希望它只是恰当地显示,我需要将它插入数据库。
谢谢!
答案 0 :(得分:1)
原始帖子中的代码可以正常使用,至少我添加了<xml>
个标签。确保HTML页面的内容编码设置正确,即发送HTTP标头Content-Type:text/html; charset=UTF-8
或在<head>
中设置此标头。将包含此符号的字符串插入数据库时,首先使用SET NAMES UTF8
将字符集设置为UTF-8。当然,您要插入的数据库/表/字段也应设置为UTF8。
答案 1 :(得分:0)
尝试使用utf8_decode或utf8_encode php函数。他们应该把它转换成正确的角色。
echo utf8_decode($this->title);
答案 2 :(得分:0)
在将整个字符串加载到simplexmlelement之前,对整个字符串运行htmlentities()。这将转换PHP识别为html实体的任何内容(例如£,&amp;,€)。这将允许您将它们存储在您的数据库中,而无需使用所有mb *函数,以及您需要在数据库中跳过UTF8支持所需的所有其他环节。
如果你有任何真正的特殊字符无法以这种方式编码,这将无效。
答案 3 :(得分:-1)
如果php正确地从XML文件中获取它,并且问题是将其输出到您的数据库中,请使用htmlspecialchars
,它将所有符号转换为它们的html等价物。该符号将存储为“™”,当您从数据库中检索时,可以很好地处理该符号。