【问题标题】:Covert special character to html number/name and again to special character in php将特殊字符转换为 html 编号/名称,然后再转换为 php 中的特殊字符
【发布时间】:2014-06-24 07:02:06
【问题描述】:

我在将特殊字符存储在数据库中并作为符号再次检索时遇到问题。

例如,我有一个像Côte d'Ivoire 这样的字符串

我想要做的是将特殊字符 ô 转换为 HTML 编号 ô 或名称 ô 并且在检索时我需要再次将 HTML 转换为特殊符号。

我还需要将此字符串作为 Web 服务的 JSON 响应传递。

我尝试了一些php 函数,例如htmlspecialchars()htmlspecialchars_decode(),但没有得到想要的输出。

任何帮助将不胜感激。如果有任何其他方法可以做到这一点,那么它也会非常有帮助。

提前致谢

【问题讨论】:

  • 如果该字符是 unicode (UTF-8),则无需将其转换为 HTML 实体,因为 unicode 字符在 JSON 格式中有效。如果没有,则必须将其转换为 unicode (UTF-8)

标签: php mysql json special-characters


【解决方案1】:

您可以使用htmlentities 函数来转换特殊字符。

您必须将 UTF8 传递给 json_encode 函数,因此您可以在编码之前对您的数据使用 utf8_encode

http://php.net/manual/en/function.htmlentities.php

http://php.net/manual/en/function.utf8-encode.php

【讨论】:

  • 要恢复进程有html_entity_decode
【解决方案2】:

使用'utf8_unicode_ci'进行排序,同时将数据保存在数据库中并以通常的方式检索数据。并检查确切的数据是否保存在数据库中。

【讨论】:

    【解决方案3】:

    当您为整个站点(包括您的数据库)使用 UTF-8 时,这个问题更容易解决。应该尽可能晚地进行转义,并且只针对所需的目标系统。

    一个例子: 您的 HTML 页面是 UTF-8 编码的,并且您接收用户输入,您也以 UTF-8 获得用户输入。您可以将这个值按原样存储到数据库中,只需使用准备好的语句或在构建 SQL 字符串之前调用mysqli_real_escape_string()。这对输入进行转义只是为了使其对 SQL 语句安全,数据库将包含原始用户输入。

    当从数据库接收回值时,您会得到原始的 UTF-8 输入,然后您可以调用 htmlspecialchars() 将其转义以显示在 HTML 输出中。我写了一篇关于使用UTF-8 for the whole site的小文章,你可以在那里找到更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2016-01-05
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多