【发布时间】:2016-01-25 16:19:50
【问题描述】:
我有一个带有特殊字符的 XML 编码为 xx;在里面。只要我将这些字符输出到浏览器,就可以正常工作,因为它们是 HTML 编码(有点)。
但我需要使用simplexml_load_string 读取 XML 文件,这会导致某些字符出现垃圾,因为它们位于扩展的 ASCII 表中。
例如:
š 转换为 š - 但是当我尝试使用 html_entity_decode 时,我得到一个空字符。
我几乎尝试了从 iconv 到 mb_decode_numericentity 的所有方法 - 没有任何效果。
我如何转换那些 xx;给真正的角色???
[编辑]
我发现这张表http://www.ascii-code.com 声称š 是使用ISO-8859-1 的扩展ASCII 字符
我很困惑...
【问题讨论】:
-
鉴于你的例子 应该解码成š,你没有使用utf-8编码而是一些iso。就个人而言,我会切换到 utf-8,但这不是重点。我的猜测是您需要指示 html_entity_decode() 坚持您喜欢的编码,而不是采用 php.ini 中指定的默认编码。
-
谢谢卡雷尔 - 我实际上尝试过,使用 html_entity_decode() 支持的所有编码 - 但它们都不起作用:(
-
听起来像是对 HTML 实体的非标准和/或可能已过时的用法。不确定是否有任何标准的 PHP 函数可以处理这个问题。也许你必须编写一个自定义的
preg_replace_callback函数或类似的函数来解码这些特定的代码点。 -
这绝对不是标准的。 XML 由一些第 3 方公司提供。我不知道他们为什么要这样做。有趣的是,当我将“”添加到谷歌搜索字段时,它会将其转换为 š - 所以如果他们能做到,我为什么不能呢? ;)
标签: php decode html-entities extended-ascii