我有一个带有特殊字符的XML,编码为& #xxx;在里面。只要我将这些字符输出到浏览器,那就可以了,因为它们是HTML-Encodings(有点)。
但我需要使用simplexml_load_string
读取XML文件,这会导致某些字符无效,因为它们位于扩展的ASCII表中。
例如:
š
转换为š - 但是当我尝试使用html_entity_decode时,我会得到一个空字符。
我尝试了从iconv
到mb_decode_numericentity
的几乎所有内容 - 没有任何效果。
如何转换那些& #xxx;真正的人物???
[编辑]
我发现此表http://www.ascii-code.com声称š
是使用ISO-8859-1的扩展ASCII字符
我很困惑......
答案 0 :(得分:1)
您显然正在处理打印时看起来几乎完全相同的两个不同字符:
š
š
对应'SINGLE CHARACTER INTRODUCER' (U+009A) 我发现我的字体或文本编辑器都没有正确处理第二个字体。所以你很可能因为这个原因而得到一个空白的角色。
第二个似乎是某种weird control character,其确切目的不符合我的理解:
后跟一个可打印的字符(0x20到0x7E)或 格式效应器(0x08到0x0D)。目的是提供一种手段 通过它来控制功能或图形字符 无论使用哪种图形或控制集,都可以使用 可以定义。以下字节将调用的定义 从未在国际标准中实施。不属于 第一版ISO / IEC 6429
值得注意的是character references in XML使用固定编码的数字代码(某些UCS变体)。如果XML文件的作者不遵循此约定,您将面临无效的XML(有效阻止其被XML库解析的东西)或包含损坏数据的有效XML(最多,将需要繁琐的后期处理)。