日期:2014-05-17  浏览次数:20901 次

用html文件建的客户端,用java建的服务器端,采用dopost方法接收用于传输文件,文件名是名字乱码,文件中的内容却是正常的
文件名的汉语是乱码,英文诗正常的。文件内容中的汉语是好的,感觉非常诡异,应该是编码除了问题,但就是不知道该具体怎么搞,经过debug发现在传输进来到
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setRepository(file);
ServletFileUpload servletFileUpload = new ServletFileUpload(
diskFileItemFactory);
servletFileUpload.setHeaderEncoding("UTF-8");
// 将结果放在List中
List<FileItem> list = new ArrayList<FileItem>();
try {
list = servletFileUpload.parseRequest(request);
} catch (FileUploadException e1) {
// TODO Auto-generated catch block
System.out.println("文件上传发生错误" + e1.getMessage());
e1.printStackTrace();
}
时,list中文件名中的汉语已是乱码,这该怎么弄啊


------解决方案--------------------
有没有设置编码?

------解决方案--------------------
这个~~我刚学这个文件是中文名是乱码的问题,希望能帮你解决,看看这个写代码 
// 读取资源中文文件,让用户下载
private void test11(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext sc = getServletContext();
String path = sc.getRealPath("/images/美女.jpg");// /代表当前应用,这个参数必须以"/"开头
String filename = path.substring(path.lastIndexOf("\\")+1);
InputStream in = new FileInputStream(path);
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename, "UTF-8"));
OutputStream out = response.getOutputStream();
int len = -1;
byte b[] = new byte[1024];
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
in.close();
out.close();
}