我正在使用这个jquery .ajax函数来保存表单上的注释:
var request = $.ajax({
data: {"yourname": yourname,
"yourmessage": yourmessage},
type: "POST",
url: "xxx.php",
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(data){...}
}
});
以下是名为:
的PHP页面$yourname = trim(mysql_real_escape_string($_POST['yourname']));
$yourmessage = trim(mysql_real_escape_string($_POST['yourmessage']));
mysql_query("INSERT INTO `reactions` VALUES ('".$yourname."','".$yourmessage."')");
特殊字符未正确注册,因此我得到了这个结果:
“C \'estÃçaquetureéfères?”而不是“C'estàçadequetuéfères?”
为了正确地将特殊字符(和换行符)保存到SQL,我必须更改什么?
答案 0 :(得分:3)
看起来您可能需要使用utf8_decode,可能是这样的:
$yourname = utf8_decode(trim(mysql_real_escape_string($_POST['yourname'])));
$yourmessage = utf8_decode(trim(mysql_real_escape_string($_POST['yourmessage'])));
旁注:直接字符串连接只是要求SQL注入攻击。如果要在任何类型的生产环境中,请查看mysql_real_escape_string。
答案 1 :(得分:1)
它与JQuery或PHP无关。它可能与您处理请求和插入数据有关。
确保涵盖以下所有理由:
mysql_query("SET NAMES utf8");
或mysql --default-character-set=utf8 -uyour_user -p
Header("Content-Type: text/html; charset=UTF-8");
答案 2 :(得分:0)
probabaly它关于你不使用UTF-8。如果你的代码以UTF-8开头,你就不会得到这样的错误。不要忘记基于UTF-8发送的所有ajax请求
其他方式可以使用mb_convert_encoding函数或iconv函数
转换文本