当前位置: 代码迷 >> Java Web开发 >> 中文乱码有关问题
  详细解决方案

中文乱码有关问题

热度:34   发布时间:2016-04-17 13:09:31.0
中文乱码问题.
一个jsp页面
<form   action= "check.do ">
<input   type= "file "   name= "file1 ">
</form>
一个action进行处理
request.setCharacterEncoding( "GBK ");
String   filepath=request.getParameter( "excelpath ");
如果路径中包含中文,取得的就是乱码.
不知道怎么解决.也试过
filepath=   new   String(filepath.getBytes( "iso-8859-1 "),
"gb2312 ");

------解决方案--------------------
在你的TAMCAT中的sever.xml中做一下设置试试
<Connector
port= "8088 " maxThreads= "150 " minSpareThreads= "25 " maxSpareThreads= "75 "
enableLookups= "false " redirectPort= "8443 " acceptCount= "100 "
debug= "0 " connectionTimeout= "20000 "
disableUploadTimeout= "true " URIEncoding= "GBK "/>
加上一个URIEncoding= "GBK ";
------解决方案--------------------
给你一个FILTER装上 STRUTS的中文全部解决 不用些什么request.setCharacterEncoding( "GBK ");
也不用特意去编码了

//SetCharacterEncodingFilter.java

package com.yourcompany.struts.common;

import javax.servlet.*;

import java.io.IOException;



public class SetCharacterEncodingFilter implements Filter {



protected String encoding = null;

protected FilterConfig filterConfig = null;

protected boolean ignore = true;



public void destroy() {

this.encoding = null;

this.filterConfig = null;

}



public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain)

throws IOException, ServletException {



if (ignore || (request.getCharacterEncoding() == null)) {

String encoding = selectEncoding(request);

if (encoding != null)

request.setCharacterEncoding(encoding);

}

chain.doFilter(request, response);

}



public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

this.encoding = filterConfig.getInitParameter( "encoding ");

String value = filterConfig.getInitParameter( "ignore ");

if (value == null)

this.ignore = true;

else if (value.equalsIgnoreCase( "true "))

this.ignore = true;

else if (value.equalsIgnoreCase( "yes "))

this.ignore = true;

else

this.ignore = false;

}



protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}

}

配置在web.xml中加:

<filter>
<filter-name> Set Character Encoding </filter-name>
<filter-class> com.yourcompany.struts.common.SetCharacterEncodingFilter </filter-class>
- <init-param>
<param-name> encoding </param-name>
<param-value> GB2312 </param-value>
</init-param>
- <init-param>
<param-name> ignore </param-name>
<param-value> true </param-value>
</init-param>
</filter>
- <filter-mapping>
<filter-name> Set Character Encoding </filter-name>
<servlet-name> action </servlet-name>
  相关解决方案