我正在尝试解决从表单收集信息的页面中的问题。在<head>
我们有:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
连接到数据库后,有一行:
mysql_query("SET NAMES utf8");
在变量$ comments中插入的一个字段通常有撇号,所以我们有一行:
$comments= addslashes($comments);
将其插入数据库之前。
当我们尝试从另一个页面读出数据库时,我们执行此行
stripslashes($row[$comments]);
当我们“得到一个简单的?(问号)时,它实际上存储在mySQL中。
其他字符如简单的撇号'只是变成了...在数据库中和 或类似的。
如何摆脱这些问号字符并保留原始数据?
答案 0 :(得分:1)
addslashes()
是错误的转义函数。您必须使用mysql_real_escape_string()
,因为转义取决于所使用的字符集。因此,您最好还使用mysql_set_charset()
,这应取代您的SET NAMES utf8
查询。
总而言之,请注意不推荐使用mysql扩展,并将从PHP中删除。请改用mysqli。
反向部分也是错误的。没有必要删除转义 - 在查询期间被“使用”时它被删除了。但是,您必须确保将输出的所有数据正确编码为HTML。