日语和中文的上传文件名编码问题

我目前正在使用jQuery-File-Upload 。 我可以上传一些带有日文或中文文件名的文件,我可以看到文件名是例如浏览器调试模式中的“お疲れ様です.txt”或“测试文档.txt”,但是在后端(Java) ,它们变成了“ -ãã,Œæ§~㠧㠙.txt”和“æμ<试æ-‡æ¡£.txt”。
我曾经尝试将formAcceptCharset设置为UTF-8,但它不起作用。
题:
解析MultipartFormData时如何在Java端获取正确的文件名?

提前致谢。

BTW,以下是我的数据

-----------------------------25382434931419 Content-Disposition: form-data; name="file"; filename="�疲れ様��.txt" Content-Type: text/plain .... 

添加Java代码
事实上我目前在Java方面什么都没做,

 @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public String upload(InMultiPart inMP) { while (inMP.hasNext()) { InPart part = inMP.next(); MultivaluedMap headers = part.getHeaders(); String fileName = null; if (!headers.containsKey("Content-Disposition")) { continue; } else { // get the file name here fileName = parseFileName(headers.getFirst("Content-Disposition")); } //..... } //...... } private String parseFileName(String disposition) { int fileNameIndex = disposition.indexOf("filename="); if (fileNameIndex < 0) { return null; } int start = disposition.indexOf("\"", fileNameIndex) + 1; int end = disposition.indexOf("\"", start); return disposition.substring(start, end); } 

正如Stephen C所说,可以使用filter来获得正确的编码。 我们在JBOSS 7.1.1上遇到了这个问题,并实现了一个filter。

在web xml中

  set character encoding RequestEncodingFilter com.myapp.RequestEncodingFilter  encoding UTF-8    RequestEncodingFilter /*  

过滤类:

 public class RequestEncodingFilter implements Filter { private static final String ENCODING = "encoding"; private String configuredEncoding; @Override public void init(FilterConfig filterConfig) throws ServletException { configuredEncoding = filterConfig.getInitParameter(ENCODING); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding(configuredEncoding); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } 

}