zoukankan      html  css  js  c++  java
  • 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) 前面三种客户端编码都可以用这个方法在后台解码。

  • 相关阅读:
    C语言-数组指针
    关于知网文章下载
    SpringBoot静态资源文件存放位置
    ArchLinux安装的vscode修改插件源
    I/O复用的高级应用三:同时处理TCP和UDP服务
    Windows查看动态库/静态库位数的方法
    VS 窗口程序没有输出时
    Windows下编译Boost
    VS设置C++代码注释模板
    No Target Architecture
  • 原文地址:https://www.cnblogs.com/aaronguo/p/2532419.html
Copyright © 2011-2022 走看看