gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:24:39 25 4
gpt4 key购买 nike

我试图从 xml 中获得一个 € sing 的值,但是当我尝试时,它返回了奇怪的代码。

$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 中不存在,所以这个 XML 声明不可能是正确的。

输出 Á€表明该文件实际上已在 Windows 代码页 1252(西欧)中编码,该代码页类似于 ISO-8859-1,但在 0x80–0x9F 范围内具有不同的字符,包括欧元符号。

PHP 已将数据解析为 ISO-8859-1,其中 的 CP1252 编码,字节 0x80,映射到控制字符 U+0080。然后它为您提供包含 U+0080 的 Unicode 字符串作为 UTF-8 编码的字节字符串 U+00C2,U+0080。将其输出到页面中的浏览器作为 cp1252、ISO-8859-1(出于繁琐的遗留问题)或在西欧机器上没有字符集,给出 Á€ . htmlentities()不以任何方式对其进行编码,因为控制代码 U+0080 没有 HTML 实体。

以下是您应该如何进行:
  • 如果您必须在 cp1252 中有您的 XML 输入文件,请在 XML 声明的 encoding="windows-1252" 中声明。而不是不准确的ISO-8859-1 .不过,XML 解析器不需要能够读取 cp1252,因此更好的互操作性是只使用默认的 UTF-8 编码并重新保存文件以进行匹配。
  • 使用 Content-Type 以 UTF-8 格式提供输出 HTML 页面 header 或元标记。然后使用 htmlspecialchars()而不是 htmlentities()这样您就不会浪费时间对不需要的非 ASCII 字符进行编码。
  • 关于php - 从 XML php 获取值后的奇怪字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177966/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com