将特殊字符转换为html编号/名称,再次转换为php中的特殊字符

时间:2014-06-24 07:02:07

标签: php mysql json special-characters

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

例如,我有一个像Côte d'Ivoire

这样的字符串

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

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

我尝试了一些php函数,例如htmlspecialchars()htmlspecialchars_decode()但未获得所需的输出。

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

提前致谢

3 个答案:

答案 0 :(得分:1)

您可以使用htmlentities功能转换特殊字符。

您必须将UTF8传递给json_encode函数,这样您才能在编码前对数据使用utf8_encode

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

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

答案 1 :(得分:0)

使用' utf8_unicode_ci'对于整理,同时保存数据库中的数据并以常规方式检索数据。并检查确切数据是否保存在数据库中。

答案 2 :(得分:0)

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

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

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