使用Unicode进行JQuery AJAX调用.POST Unicode数据的正确方法?

Rya*_*ith 4 unicode ajax jquery

我有POSTS AJAX到服务器的页面,通常数据将是Unicode.

这种情况大部分时间都有效,但看起来它有时会破裂,而我似乎无法在任何地方找到答案.我一直在使用encodeURI,但我不确定这是否正确.

这是代码的示例:

    $.ajax({
       type: "POST",
       url: "SomePage.php",
       data: "val1=" + encodeURI(unicodeVariable) + "&presentation=" + encodeURI(someUnicodeVariable),
       success: function(msg){

       }
     });                    
Run Code Online (Sandbox Code Playgroud)

我猜测正在发生的事情有时是一个Unicode字符包含了一个&那就是打破它.

使用JQuery为AJAX调用编码Unicode的正确方法是什么?

谢谢.

Luc*_*eis 6

这是一个比较所有编码方法的好链接.

最后, 在编码URI的单个组件时,大多数情况下应使用encodeURIComponent()方法.此方法将编码某些字符,这些字符通常被识别为URI的特殊字符,因此可以包含许多组件.请注意,此方法不对'字符进行编码,因为它是URI中的有效字符.

encodeURIComponent()也编码"&"符号:

encodeURI("&"); // "&"
encodeURIComponent("&"); // "%26"
Run Code Online (Sandbox Code Playgroud)

或者你可以转换这一行:

data: "val1=" + encodeURI(unicodeVariable) + "&presentation=" + encodeURI(someUnicodeVariable),
Run Code Online (Sandbox Code Playgroud)

进入一个对象:

data: {
    val1: unicodeVariable,
    presentation: someUnicodeVariable
}
Run Code Online (Sandbox Code Playgroud)

jQuery将使用encodeURIComponent()自动确保数据编码.