我正在使用此ajax代码将数据发送到服务器:
$.ajax({
data: postData,
type: method,
url: url,
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
error: function(jqXHR,textStatus,err){alert("Error returned from ajax call "+err);},
success: function(data,status,jqXHR){
// process response...
}
});
postData
是一个包含多个值的查询字符串,method
为GET
或POST
问题在于,当我发送包含Älypuhelimen lisävarusteet
之类的值的查询字符串时,数据库中的结果为�lypuhelimen lis�varusteet
数据库连接排序规则是utf-8,当我不使用ajax发布并保存到数据库时这很好用...绝对是混淆编码的ajax ...
我也尝试对数据使用encodeURIComponent()函数,如果我使用它就变成%C4lypuhelimen%20lis%E4varusteet
......对于escape()函数也是如此......
任何帮助将不胜感激......
答案 0 :(得分:1)
你应该尝试jQuery Base64编码。
JavaScript的:
<script src="jquery.min.js"></script>
<script src="jquery.base64.min.js"></script>
<script>
enctext = $.base64.encode("yourtext");
//your ajax code goes here.
</script>
PHP:
<?php
$org_text = base64_decode($_POST['your_variable']);
?>
jQuery Base64插件。
从这里下载。
答案 1 :(得分:0)
尝试将数据库中的列更改为utf16_bin Collation
发布php数据库连接代码。
答案 2 :(得分:0)
只是为了获取信息并帮助可能陷入同样情况的其他人......
问题在于postData本身......它被解析为每个post变量都应用了escape()...使用encodeURIComponent()代替escape()工作!
<强>要点:强> Donot使用escape()函数到url-escape查询组件...使用encodeURIComponent()代替......