来自PHP形式的奇怪字符。字符集?

时间:2011-03-31 00:14:51

标签: php character-encoding

我的网站上有一个表单,用户可以在产品评论中提交文字。审查进入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()?

非常感谢任何帮助。谢谢!

克里斯

1 个答案:

答案 0 :(得分:0)

确保网络服务器宣传UTF-8也很好,但这不是罪魁祸首。我使用Firefox中的Live HTTP Headers扩展来测试。 MySQL总是默认使用latin-1字符集,你必须使用mysql_set_charset()明确地设置它。 PHP本身不像UTF-8这样的多字节字符集,但只要它不需要理解那些字符(例如正则表达式匹配)就是安全的。您只需要确保用户(通过元标记)和数据库的所有输入和输出都知道字符编码。