【问题标题】:html entities decoding in phpphp中的html实体解码
【发布时间】:2010-07-15 18:08:06
【问题描述】:

我似乎完全无法绕过 utf-8 字符编码。

所以我将数据库中的内容导出为 utf-8 xml 文件。 我正在导入的软件对字符编码非常严格,所以我不能将所有内容都放在CDATA标签中。

有一大堆奇怪的字符,例如’,——……已经在数据中了。

这些在 xml 中不起作用,需要替换掉(通常只用一个 ' 引号)。

理想情况下,我想解码所有字符,然后使用 htmlspecialchars($text, ENT_COMPAT, 'UTF-8', FALSE) 将它们重新编码回来。但我似乎找不到可以解码它们的函数。有吗? 我已经开始使用 str_replace() 手动检查每个实体,但这比我预期的要大得多。

任何帮助都是救命稻草。 谢谢

【问题讨论】:

    标签: php utf-8 character-encoding


    【解决方案1】:

    html_entity_decode() 也许?

    在某些情况下,在 php 中的字符转换问题中,设置语言环境非常重要。没关系,例如

    setlocale(LC_CTYPE,'en_US.utf8');
    

    但我建议,如果可能的话,花时间从一开始就正确编码,而不是恢复到实体,都是值得的。

    【讨论】:

    • 谢谢,我一直在尝试 html_entity_decode()。但即使设置了语言环境,它似乎仍然无法转换像 ndash 这样的实体。是的,我现在的目标是删除所有这些愚蠢的字符,因此根本需要实体。不幸的是,我必须处理给定的数据,而且对于如何更正编码,我似乎遇到了困难。目前我能看到的唯一解决方案是查找和替换。
    • 也许你必须安装一个语言环境或其他东西,因为 om my mac (!) 它只是在命令行中工作:mac:~$ php \n <?php print html_entity_decode("–",ENT_COMPAT,"UTF-8"); ?> \n –(抱歉缺少格式,\n=newline)debian stock lenny : 一样。
    • 如果你想完全摆脱它们,请使用 iconv 并将 UTF-8 转换为 ASCII//TRANSLIT 或 ASCII//IGNORE 或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2011-02-24
    • 2013-11-17
    • 2018-01-14
    相关资源
    最近更新 更多