JS/JQUERY(16)——JS中URL传递含有中文字符乱码问题

1.使用代码完成字符集的修改


方法(1):
function testOne() {
   var url =  "testOne_test.do?expr="+你好;
   location  = encodeURI(url);

}

后台java代码:
String expr = new String(request.getParameter("expr").getBytes("ISO-8859-1"),"UTF-8"); 
方法(2):

function testOne() {
   var url =  "testOne_test.do?expr="+你好;
   location = encodeURI(encodeURI(url)); 
}

后台java代码:
String expr = java.net.URLDecoder.decode(lrequest.getParameter("expr") , "UTF-8");

2.修改tomacat中的配置参数

在tomcat下面找到server.xml 
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" URIEncoding="GBK">
根据需要修改为UTF-8等字符集。

3.在web工程中添加spring.jar,使用spring的CharacterEncodingFilter

<filter>  
 <filter-name>encoding</filter-name>  
 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
 <init-param>  
  <param-name>encoding</param-name>  
  <param-value>UTF-8</param-value>  
 </init-param>  
</filter>  
<filter-mapping>  
 <filter-name>encoding</filter-name>  
 <url-pattern>/*</url-pattern>  
</filter-mapping>  
org.springframework.web.filter.CharacterEncodingFilter 中的转码部分:

protected
void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding); if (this.forceEncoding && responseSetCharacterEncodingAvailable) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response); }

 

posted @ 2015-07-10 14:18  xu_shuyi  阅读(304)  评论(0)    收藏  举报