ajax向服务器端传值出现乱码问题

AJAX传值时采用的是UTF-8编码格式,客户端中文字符传输到服务器端时,如果服务器编码格式或者所采用的MVC框架的编码格式不是UTF-8,则很可能会出现中文乱码。解决办法如下:

 

客户端用js函数encodeURI()对中文字符进行两次编码,服务器端采用URLDecoder类对客户端传输过来的中文字符进行UTF-8格式的解码。示例:

客户端代码:

View Code
$.ajax({

                        type: "post",

                        url: "../Member/IsThisMemberName/?id=" + encodeURI(encodeURI($("张三风")),

                        success: function (msg) {

                            alert(msg); 

                        }

                    });
View Code
$.ajax({  

      type: "post",  

      url: "createNewGroup.action",  

     data:"name="+encodeURI(encodeURI("张三")),  

      success: function(msg){  

           alert(msg);  

     }  

    });

服务器端对接收到的值进行解码Server.UrlDecode(),服务器端代码:

View Code
public string IsThisMemberName(string id) {

            string name = Server.UrlDecode(id);

            return name;

        }

 

decodeURI 方法:返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) : String
BTW:C#中对URL编码的方法。。。
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。

你可能感兴趣的:(Ajax)