$ .ajax和重音字符问题

时间:2016-06-16 03:15:55

标签: php jquery ajax

我正在使用此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是一个包含多个值的查询字符串,methodGETPOST

问题在于,当我发送包含Älypuhelimen lisävarusteet之类的值的查询字符串时,数据库中的结果为�lypuhelimen lis�varusteet

数据库连接排序规则是utf-8,当我不使用ajax发布并保存到数据库时这很好用...绝对是混淆编码的ajax ...

我也尝试对数据使用encodeURIComponent()函数,如果我使用它就变成%C4lypuhelimen%20lis%E4varusteet ......对于escape()函数也是如此......

任何帮助将不胜感激......

3 个答案:

答案 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插件。

从这里下载。

https://github.com/carlo/jquery-base64

答案 1 :(得分:0)

尝试将数据库中的列更改为utf16_bin Collat​​ion

  

发布php数据库连接代码。

答案 2 :(得分:0)

只是为了获取信息并帮助可能陷入同样情况的其他人......

问题在于postData本身......它被解析为每个post变量都应用了escape()...使用encodeURIComponent()代替escape()工作!

<强>要点: Donot使用escape()函数到url-escape查询组件...使用encodeURIComponent()代替......