我遇到了在数据库中存储特殊字符并再次检索为符号的问题。
例如,我有一个像Côte d'Ivoire
我想要做的是将特殊字符ô
转换为HTML编号ô
或名称ô
,在检索时我需要再次将HTML转换为特殊符号。
我还需要将此字符串作为Web服务的JSON
响应传递。
我尝试了一些php
函数,例如htmlspecialchars()
和htmlspecialchars_decode()
但未获得所需的输出。
任何帮助将不胜感激。如果还有其他方法可以做到,那么它也会非常有用。
提前致谢
答案 0 :(得分:1)
您可以使用htmlentities
功能转换特殊字符。
您必须将UTF8传递给json_encode
函数,这样您才能在编码前对数据使用utf8_encode
。
答案 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的小文章,你可以在那里找到更多信息。