window.location.herf=url参数有中文,到后台乱码问题解决

js中的代码:

  /*将中文的参数进行两次编码 */

  function queryByName(){
                    //获取查询条件的用户名
                    var queryName=$("#queryName").val();//尚晓飞当当
                    alert(queryName);
                    //进行后台跳转
                    window.location.href="<%=request.getContextPath() %>/master/sysUser_queryByName.action?queryName="+encodeURI(encodeURI(queryName));
                    
                }

 

java后台的代码:

 

  public String queryByName() throws UnsupportedEncodingException{
        
        System.out.println("SysUserAction.queryByName()"+queryName);
        //这里用struts2中设定queryName属性接收前台传来的参数,然后将该接收参数,进行解码
        String name = java.net.URLDecoder.decode(queryName,"UTF-8");//需要抛异常
        System.out.println("SysUserAction.queryByName()"+name);
        this.list=sysUserService.querySysUserByName(name);
        
        return "userList";
    }

 

 

控制台打印结果:

SysUserAction.queryByName()%E5%B0%9A%E6%99%93%E9%A3%9E%E5%BD%93%E5%BD%93
SysUserAction.queryByName()尚晓飞当当

 

 

原因:后来网搜资料,发现原来在对后台java程序里的queryName赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面 上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用 searchtext=java.net.URLDecoder.decode(queryName,"UTF-8");/*需要处理异常*/进行一次 解码就好了

 

 

 

时间: 2024-10-24 10:32:31

window.location.herf=url参数有中文,到后台乱码问题解决的相关文章

javascript window.location获取url各项参数详解

URL即:统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme:通信协议 常用的http,ftp,maito等 http://localhost/test/test.htm?id=1  代码如下 复制代码 <html> <head> </head> <body> <script languge=javas

js window.location方法URL使用方法

window.location方法获取URL 统一资源定位符 (Uniform Resource Locator, URL) 指令 结果 window.location.search "?a=1" window.location.protocol http: window.location.port window.location.pathname /a/201105/a564.html window.location.href http://www.google.cn/a/20110

java前台传中文到后台乱码问题,还有浏览器的差异

问题描述 java前台传中文到后台乱码问题,还有浏览器的差异 前台通过url的形式传中文参数,后台用 String parvalue = new String( request.getParameter("parvalue").getBytes("ISO8859-1"), "utf-8"); 这样接受,在谷歌浏览器上没问题,但在IE浏览器,QQ浏览器上却是乱码. 然后换个方式,前台url += "&area=" + e

JSP中js传递和解析URL参数以及中文转码和解码问题_JSP编程

1.传递参数: 复制代码 代码如下: var pmt = 'sensor='+ encodeURI(encodeURI(sensor))+'&device='+encodeURI(encodeURI(device))+'&instrument='; pmt += encodeURI(encodeURI(instrument))+'&n='+n+'&addDate='+addDate; top.location.href = 'jsp/print/diagnosticAnaP

php中文字符串截取乱码问题解决方法

字符串编码为GB2312的,一个中文字符占两个字节:  代码如下 复制代码 public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度         $strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度         for($i = $start; $i < $strlen;) {

javascript-Javascript中window.location无法跳转

问题描述 Javascript中window.location无法跳转 我使用的是SpringMVC,在Javascript中,写了一句 window.location = "ExpInfo/addExtract?ids=" + ids; 这是后台Controller的方法 @RequiresPermissions("expertinfo:expInfo:view") @RequestMapping(value = "/addExtract")

window.location和document.location的区别分析_javascript技巧

document.location 这个对象包含了当前URL的信息 location.host 获取port号 location.hostname 设置或获取主机名称 location.href 设置或获取整个URL location.port设置或获取URL的端口号 location.search 设置或获取href属性中跟在问号后面的部分 -----------------------------------------------------------------------------

js获取地址栏url以及获取url参数

js原生态写法  代码如下 复制代码 function getUrlParam(name) {     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象     var r = window.location.search.substr(1).match(reg);  //匹配目标参数     if (r!=null) return unesc

JS教程:window.location用法区别

window.location.href=&http://www.webjx.com/javascript/ldquo;url":改变url地址; window.location.replace("url"):将地址替换成新url,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过"前进"和"后 退"来访问已经被替换的URL,这个特点对于做一些过渡页面非常有用! window.