JAVA URL中带有中文时的处理

JAVA URL中带有中文时的处理

JAVA URL中带有中文时的处理

JAVA 中URL链接中文参数乱码的处理方法

解 决ajax提交中文、URL中文参数传递后的乱码问题的解决办法:http://www.javaly.cn/javahome/java /content.detail/%E8%A7%A3%E5%86%B3ajax%E6%8F%90%E4%BA%A4%E4%B8%AD%E6%96%87%E3%80%81URL%E4%B8%AD%E6%96%87%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E5%90%8E%E7%9A%84%E4%B9%B1%E7%A0%81%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/fdc1ed6c22069c56012282a321ed0465.faces

前面,我已经有2篇关于url中带中文,乱码的处理方法,今天又找到一种解决办法,觉得这个办法是最好的,所以再次拿出来给大家分享:

以前做法都是把中文进行Base64编码添加到URL后面,取得时候再用Base64解码。这样虽然能解决问题,但是太过于麻烦。

不同的AppServer如何对URL进行编码实现的原理可能会不同.(Resin和Tomcat肯定会不同)
在Tomcat下至少做到了这四个步骤就可以解决中文编码的问题

(1)确定JSP页面头部是否有:<%@ page contentType="text/html; charset=GBK" %>
(2)用这个转码:
     String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");
(3)添加filter字符过滤器
(4)如果是通过"a.jsp?param=中文"传递参数,则需要:
     a.在传参数之前先把参数进行转码:java.net.URLEncoder.encode(param);
       取值用java.net.URLDncoder.decode(param);再转回中文
     b.在你的Tomcat目录-->conf目录-->server.xml里找出这段:
       <Connector 
         port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" <!--在里边加上这个参数-->URIEncoding="gb2312"
     /> 

关键是第4步,添加URIEncoding="gb2312"

在Resin中,修改Resin.conf

 
 <server>
  ......
 <url-character-encoding>utf-8</url-character-encoding> 
 ....... 
</server>

因为,Resin decodes the URL before it dispatches to a <web- app> to the  <url-character-encoding> needs to be at the <server> level.

你可能感兴趣的:(JAVA URL中带有中文时的处理)