我正在通过xpath解析文档并从元标记中获取信息。
我正在通过utf8_decode( $metadesc )
传递这个字符串,但仍然没有正常的变音符号。该文件是UTF-8。
我想将ä
转换为ä
。
我正在通过firebug中的控制台进行调试,并将数据也写入数据库。 在这两种情况下,我得到相同的结果。 对于Div中的文本,它可以工作。只有那个metatag是错误的。
非常感谢
答案 0 :(得分:1)
嗯,xC3A4确实是Unicode字符xE4的UTF-8编码,它是ä。但在XML中,序列ä
代表了一些完全不同的东西:它代表“具有代字号的资本A”,后面跟着“货币符号”(即ä)。如果您使用XML解析器,您将看到这两个字符,并且您不会得到任何迹象表明它们是以十六进制字符引用开始的。
如果可能,您应该尝试修复生成的程序这种不正确的角色编码:这比以后修复损坏要好得多。
如果你想通过“修复”操作来做,你需要考虑到序列¤实际上可能代表XML所代表的两个字符:你将如何区分它?我不知道任何PHP,但基本上这样做的方法是提取十六进制值xC3A4,然后通过UTF-8解码。