Java-文件上传,获得的文件名部分乱码?
文件上传,非中文名称文件正常上传。但是遇到中文名称时候,上传报错,后台取到的文件名最后一个字乱码(不是格式),部分代码及截图如下, 急解决,谢谢哈..............
List<FileItem> list = diskFileUpload.parseRequest(request);
for (FileItem fileItem : list) {
if (!fileItem.isFormField()) {
File file = new File(new String(fileItem.getName().getBytes(),"utf-8"));
file = new File(this.getServletContext().getRealPath("upload"), file.getName());
if (file.exists()) {
file.delete();
}
System.out.println("file.getParentFile():" +file.getParentFile().toString());
System.out.println("file.url:" + file.toString());
file1.getParentFile().mkdirs();
file1.createNewFile();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更改tomacat 的编码格式 试一试
因为UTF-8字符集一个汉字字符占两位,你的url是奇数位的,所以最后一个字符没有得到正确的解析,如果最后一个字符是个英文字符的话就能解析,要不就得是偶数位。
1.你是什么浏览器测试的,ie?火狐?File file = new File(new String(fileItem.getName().getBytes(),"utf-8")); 这句只适合于火狐的,ie不是这样写的。
若是ie,则这样写: String fileName = URLEncoder.encode(fName.toString(), "utf-8");
2.若你是是用火狐测试的,用这句得到文件名试试, String fileName = new String(fName.toString().getBytes(), "ISO8859-1");