从XML php获取值后出现奇怪的字符

问题描述

| 我试图通过xml来获取€值,但是当我尝试使用它时,它会返回奇怪的代码
$xmlDate = $searchNode->getElementsByTagName( \"kostenvoorverkoop\" );
$valueKostenvoorverkoop = htmlentities($xmlDate->item(0)->nodeValue,ENT_QUOTES,\"UTF-8\");
//gives back Á€10,- instead of €10,-
找不到问题。
//XML
<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>
<price>€10</price>
如果我离开htmlentities,它会给出一个像ÁáÙ%10 <----这样的完全奇怪的字符串,不完全是这样,但是您知道我的意思。 如果有人可以帮助我,将对我有很大帮助,在此先感谢。 编辑: 发现了一个解决方法:将€更改为
&amp;euro;
。知道不干净,但可以。     

解决方法

        
<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>
<price>€10</price>
ISO-8859-1中不存在字符“ 4”,因此该XML声明不可能正确。 输出“ 5”表示文件实际上已经在Windows代码页1252(西欧)中进行了编码,类似于ISO-8859-1,但具有0x80–0x9F范围内的不同字符,包括欧元符号。 PHP已将数据解析为ISO-8859-1,其中1254ѭ的CP1252编码(字节0x80)映射到控制字符U + 0080。然后,它将为您提供包含U + 0080的Unicode字符串,作为UTF-8编码的字节字符串U + 00C2,U + 0080。将其输出到作为cp1252,ISO-8859-1(由于繁琐的令人困惑的遗留原因)或在西欧机器上没有字符集的页面中的浏览器,将得出
Á€
htmlentities()
不会对此进行编码,因为控制代码U + 0080没有HTML实体。 这是您应该如何进行的操作: 如果必须在cp1252中包含XML输入文件,请在XML声明的ѭ9中声明该输入,而不是在不正确的state10中声明。不过,XML解析器不需要能够读取cp1252,因此更好的互操作性是使用默认的UTF-8编码并重新保存文件以进行匹配。 使用
Content-Type
标头或meta标签将您的输出HTML页面用作UTF-8。然后使用
htmlspecialchars()
而不是
htmlentities()
,这样您就不会浪费时间对不需要的非ASCII字符进行编码。     ,        您是否尝试将xml中的编码从ISO-8859-1更改为UTF-8? 或者,在进行解码时,只需将php这个字符集ISO-8859-1放入php。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...