• 关于encodeURI(encodeURI($("#").val())) 解决乱码的问题


      最近在写三期项目的时候,遇到一个问题,就是用js提交参数到后台handler中的时候,用实体类接受的时候因为多个jsp页面命名(name="")相同,导致后台获取的时候出现乱码现象,关于这一现象,通过查询得知可以使用 javaScript endcodeURI()函数解决。在页面上进行两次编码操作,然后在后台再进行一次解码。

      encodeURI() 函数可把字符串作为 URI 进行编码。在js中通过定义name 和 pwd 来获取属性值:

          var name = $("#uname").val();

          var pwd = $("#upwd").val();

      然后通过encodeURI() 函数进行两次转码:

          var uname = encodeURI(encodeURI(name));

          var upwd = encodeURI(encodeURI(pwd));

      再用get方法在地址栏上传参到后台:     

          $.get("user/numLogin?User_UserName="+uname+"&User_UserPassword="+upwd,function(data){
            if(data){
              alert("登录成功!!!");
            }else{
               alert("用户名或密码错误!!!");
            }
          },"json");

      在后台用实体类接受后在进行一次转换,再存进实体类中:  

        @RequestMapping("/numLogin")
        @ResponseBody
        public boolean doNumLogin(UserEntity user, HttpSession session) throws UnsupportedEncodingException{
          String name = user.getUser_UserName();
          user.setUser_UserName(URLDecoder.decode(name,"utf-8"));
          String pwd = user.getUser_UserPassword();
          user.setUser_UserPassword(URLDecoder.decode(pwd,"utf-8"));
          user = userService.login(user);
          session.setAttribute("loginUser", user);
          if (user != null) {
            return true;
          }else {
            return false;
          }
        }

        然后,再后台获得的数据就是正常的中文utf-8字符了。

       说明:

          该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

          该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

      提示和注释:

          提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

  • 相关阅读:
    机器学习-聚类问题
    机器学习--回归问题
    CreateRemoteThread盲注提权原理分析
    Linux下进程隐藏的方法及其对抗
    常见未授权访问漏洞总结
    Windows日志识别入侵痕迹
    打造自己的弱口令扫描工具
    Linux 命令被劫持,应急处理办法
    攻击Java Web应用--思维导图
    新型横向移动工具原理分析、代码分析、优缺点以及检测方案
  • 原文地址:https://www.cnblogs.com/shuaiyongyong/p/6506123.html
Copyright © 2020-2023  润新知