基本上,我有一张餐馆老板可以填写的表格(除其他外)要求提供公司名称。
如果输入“FoobarCafé”之类的东西,它将作为“FoobarCafé”存储在MySQL数据库中。它为什么这样做?
HTML页面和数据库表都设置为UTF-8编码(“business_name”字段的排序规则为“utf8_unicode_ci
”)。不应该照顾一切吗?究竟是什么原因导致特殊字符"é" (&etilde;)
以"é"
的形式存储在数据库中?这毫无意义。
答案 0 :(得分:2)
您的数据库连接可能未设置为UTF-8。
在连接开始时,发出以下查询:
SET NAMES 'utf8';
这会将连接字符集设置为utf8,它将匹配表,代码和客户端页面的编码和整理。
答案 1 :(得分:1)
我猜它是从形式而不是mysql,因为电子邮件来自那里。看看那个。也许你有某种“预处理器”。
只是想知道,为什么要在向用户显示该信息时存储html字符?这是灾难的秘诀。 XSS。
快速修复,尝试在打开uft-8的数据上使用htmlentites。发送电子邮件为html,你应该没事。
但是,请尝试找出问题的原因。
修改强> 的 echo htmlentities($ str,ENT_QUOTES,“UTF-8”);
那应该可以解决你的问题。必须定义utf 8的字符集
答案 2 :(得分:0)
检查相应db表或db的设置,将其设置为utf-8