使用PHP处理特殊符号(即&x2122;而不是&xE2;&x201E;&xA2;)
我试图阅读一个XML文档,其中包含使用PHP处理特殊符号(即&x2122;而不是&xE2;&x201E;&xA2;),php,Php,我试图阅读一个XML文档,其中包含™(™), 但出于某种原因,无论我尝试什么,它总是显示为–x 例如: $xml = new SimpleXMLElement('<item><title>test</title></item><item><title>™</title></item>'); foreach ($xml->item AS $item) {
™代码>(™), 但出于某种原因,无论我尝试什么,它总是显示为–x
例如:
$xml = new SimpleXMLElement('<item><title>test</title></item><item><title>™</title></item>');
foreach ($xml->item AS $item)
{
echo $item->title . "<br />";
}
Results in:
test
â„¢
$xml=newsimplexmlement('test™;');
foreach($xml->item AS$item)
{
echo$item->title.“
”;
}
结果:
测验
â„¢
为了清楚起见,我不希望它只是适当地显示,我需要将它插入到数据库中
谢谢!如果php正确地从XML文件中获取它,并且问题是将它输出到您的数据库中,请使用,它会将所有符号转换为它们的html等价物。符号将存储为“™", 当您从数据库中检索时,可以很好地处理它。您原始帖子中的代码对我来说很好,至少如果我添加了
标记。请确保HTML页面的内容编码设置正确,即发送HTTP头内容类型:text/HTML;charset=UTF-8
或在
中设置此项。当插入时将包含此符号的字符串输入数据库,首先使用集名称UTF8将字符集设置为UTF-8。当然,插入的数据库/表/字段也应设置为UTF8。尝试使用UTF8解码或UTF8编码php函数。它们应将其转换为正确的字符
echo utf8_decode($this->title);
在将整个字符串加载到simplexmlelement之前,请在整个字符串上运行htmlentities()。这将转换PHP识别为html实体的任何内容(例如,&,€)。这将允许您将它们存储在数据库中,而无需使用所有mb*函数以及数据库中UTF8支持所需的所有其他环
如果您有任何真正特殊的字符不能以这种方式编码,这将不起作用。您到底尝试了什么?:)htmlspecialchars似乎不起作用。当我回显文本时,它显示为–x,这是我唯一能让它显示(且仅显示)的方法正确的方法是发送内容类型utf-8头。嗯,php可能无法正确读取XML文件。您可以发布您正在使用的代码吗?您需要使用“htmlspecialchars”而不是htmlspecialchars。这应该也可以,但在当今时代,为utf-8合规性设计可能是个好主意:)内容编码没有实际上,与此问题有关,因为插入到DB中的值已损坏(这不是数据库问题,如果我尝试手动插入符号,效果很好),因此,我猜解析器读取XML的方式有问题。然后,您必须向我们展示用于将XML插入数据库的代码,因为您上面展示的代码非常适合我:)