我的项目整体都是 utf-8 的编码,用的spring框架,filter中设置的也是 utf-8.   post 和 get 方式提交中文都没有问题.可是我突然发现一个奇怪的现象,具体如下:
1.
<a href='test?val=测试'>测试</a>   ---- 到后台无乱码2.
function() {
 document.location.href='tset?val=测试'   ------  到后台无乱码
}3.
<a href='tset?val=测试' target='_blank'>测试</a>  ---- 到后台有乱码4.
function() {
 window.open('tset?val=测试')  ------  到后台有乱码
}
问题:只要是弹出新窗口,就会乱码, 而其他的情况则不会.按道理说,以上4种都是get方式,前两者不会乱码,而后两者弹出新窗口却会乱码, 难道他们发送请求的方式不一样吗? 有没有比较熟悉 http 协议方面知识的人来个解惑????求大神!!!

解决方案 »

  1.   

    这样传递参数肯定乱码,用URL转码
      

  2.   

    不是打开窗口的错,
    路径传中文不转码当然会乱码,var val= encodeURI(encodeURI(xxxxx)); js,String val = URLDecoder.decode(xxxx, "UTF-8"); java
      

  3.   

    是Tomcat么?估计是你中间件关于URL的默认编码没有设置?找找看:
      <Connector port="8080" protocol="HTTP/1.1"  URIEncoding="UTF-8" 
      

  4.   

    <a href='#' onclick='javascript:location.href=test.jsp?val=encodeURIComponent(中文)' target='_blank'>测试</a>
    URL传中文,本来就是一个禁忌。
      

  5.   


    那上面两个我同样没写 encodeURI() ,也没有出现乱码啊 
      

  6.   

    提交新页面需要转码,默认HTTP接收的中文都是ISO8859-1的,不新建窗口,你本页面定制了UTF-8,接收是UTF-8所以没问题。