【发布时间】:2011-03-31 00:14:50
【问题描述】:
我的网站上有一个表单,用户可以在其中提交文本作为产品评论的一部分。审核进入 MySQL 数据库,我可以在批准之前对其进行审核,以便它出现在我的网站上。我今天收到了一篇充满奇怪字符的评论。例如,我认为下面的内容应该是“有趣”的,但它在我的 MySQL 数据库中显示为:
“funâ€Â
我很确定这是一个字符编码问题,我在 stackoverflow 上阅读了一些关于此类问题的条目,但我只是不确定如何实施修复。我猜我需要更改用于从表单中进行数据清理的 php 函数,如下所示:
function cleanDataForDB($data) {
$data = trim(htmlentities(strip_tags(nl2br($data),'<br><br />')));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = mysql_real_escape_string($data);
return $data;
}
我网站的 html 以 UTF-8 编码。我在每一页的顶部都有这个标签:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
在浏览器中显示时是否需要使用 php 编码函数,例如数据输入时使用 utf8_encode() 和 utf8_decode()?
非常感谢任何帮助。谢谢!
克里斯
【问题讨论】:
-
你做
nl2br()然后用strip_tags()剥离它们? -
您使用的是什么数据库驱动程序(mysqli、pdo 等)?有时在首次连接数据库时指定字符编码会有所帮助。
-
Alex - 这是矛盾的吗?我只知道它适用于换行。
-
Greg - 我不知道,我得调查一下。我只知道我正在使用 MySQL,当我进入 phpmyadmin 时,它说字符集是 UTF-8。