Java-文件上传,获得的文件名部分乱码?

发布于 2016-11-09 18:20:19 字数 737 浏览 1318 评论 3

文件上传,非中文名称文件正常上传。但是遇到中文名称时候,上传报错,后台取到的文件名最后一个字乱码(不是格式),部分代码及截图如下, 急解决,谢谢哈..............

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-02-05 14:48:56

更改tomacat 的编码格式 试一试

瑾兮 2017-02-02 19:44:48

因为UTF-8字符集一个汉字字符占两位,你的url是奇数位的,所以最后一个字符没有得到正确的解析,如果最后一个字符是个英文字符的话就能解析,要不就得是偶数位。

甜柠檬 2016-12-02 06:12:32

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");

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文