一个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>