使用扩展ASCII解码HTML编码的字符

时间:2015-10-26 14:12:59

标签: php decode html-entities extended-ascii

我有一个带有特殊字符的XML,编码为& #xxx;在里面。只要我将这些字符输出到浏览器,那就可以了,因为它们是HTML-Encodings(有点)。 但我需要使用simplexml_load_string读取XML文件,这会导致某些字符无效,因为它们位于扩展的ASCII表中。

例如:

š转换为š - 但是当我尝试使用html_entity_decode时,我会得到一个空字符。

我尝试了从iconvmb_decode_numericentity的几乎所有内容 - 没有任何效果。

如何转换那些& #xxx;真正的人物???

[编辑] 我发现此表http://www.ascii-code.com声称š是使用ISO-8859-1的扩展ASCII字符 我很困惑......

1 个答案:

答案 0 :(得分:1)

您显然正在处理打印时看起来几乎完全相同的两个不同字符:

我发现我的字体或文本编辑器都没有正确处理第二个字体。所以你很可能因为这个原因而得到一个空白的角色。

第二个似乎是某种weird control character,其确切目的不符合我的理解:

  

后跟一个可打印的字符(0x20到0x7E)或   格式效应器(0x08到0x0D)。目的是提供一种手段   通过它来控制功能或图形字符   无论使用哪种图形或控制集,都可以使用   可以定义。以下字节将调用的定义   从未在国际标准中实施。不属于   第一版ISO / IEC 6429

值得注意的是character references in XML使用固定编码的数字代码(某些UCS变体)。如果XML文件的作者不遵循此约定,您将面临无效的XML(有效阻止其被XML库解析的东西)或包含损坏数据的有效XML(最多,将需要繁琐的后期处理)。