【问题标题】:Convert ä to Umlaut将 ä 转换为元音变音
【发布时间】:2015-07-20 16:30:26
【问题描述】:

我正在通过 xpath 解析文档并从元标记中获取信息。 我正在通过utf8_decode( $metadesc ) 传递这个字符串,但仍然没有正常的变音符号。文档是 UTF-8。

我想将Ã&#xA4 转换为ä

我正在通过 firebug 中的控制台进行调试,并将数据也写入数据库。 在这两种情况下,我得到相同的结果。 对于 Div 中的文本,它可以工作。只有一个元标记是错误的。

非常感谢

【问题讨论】:

  • 您能否提供一个代码的最小工作示例,包括输出?当您说您没有变音符号时,您的意思是在您使用 php 脚本生成的网页中吗?你如何检查输出?
  • @cxw 请看我的编辑。
  • $str = 'ä'; echo html_entity_decode($str); // ä

标签: php xpath encoding utf-8 character-encoding


【解决方案1】:

嗯,xC3A4 确实是 Unicode 字符 xE4 的 UTF-8 编码,即 ä。但在 XML 中,序列ä 代表完全不同的东西:它代表“带有波浪号的大写字母 A”后跟“货币符号”(即 ä)。如果您使用 XML 解析器,您将看到这两个字符,并且您不会得到任何迹象表明它们是作为十六进制字符引用开始的。

如果可能,您应该尝试修复生成此错误字符编码的程序:这比稍后尝试修复损坏要好得多。

如果您确实想通过“修复”操作来做到这一点,您需要考虑到序列 ä 实际上可能代表 XML 所说的两个字符:您将如何区分?我不知道任何 PHP,但基本上这样做的方法是提取十六进制值 xC3A4,然后通过 UTF-8 解码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2023-01-09
    • 2017-05-19
    相关资源
    最近更新 更多