java下载乱码问题

来到我身边 2014-04-22 09:11:31
问题:下载的文件的名称如果是中文的话,下载的时候就变成了下划线,这是怎么回事?
我在网上查到解决乱码的问题是用如下类似的代码:

String filepath = file.getFilePath()+"需要下载的文件路径
String filename = file.getFileName()+"."+file.getFileTypeInfo().getFileTypeSuffix();//需要下载的文件名字
//解决中文文件名乱码问题
if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0)
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器

但是没有起任何作用?
像上述的问题应该怎么解决?
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
来到我身边 2014-04-23
  • 打赏
  • 举报
回复
可以试试
引用 5 楼 wang7535067 的回复:


String header = ServletActionContext.getRequest().getHeader(
				"User-Agent");
		// 如果是火狐
		if (header.contains("Firefox")) {
			filedisplay = new String(filedisplay.getBytes(), "iso8859-1");
		} else {
			// IE要用URL编码格式
			filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
		}
ybyq_xyl 2014-04-23
  • 打赏
  • 举报
回复
实在不行进行二次编码,
tony4geek 2014-04-22
  • 打赏
  • 举报
回复
页面编码是什么啊?
来到我身边 2014-04-22
  • 打赏
  • 举报
回复
fileName= new String(fileName.getBytes("UTF-8"),"8859_1"); 可以解决IE中的问题 但是火狐中的问题还是解决不了
引用 1 楼 rui888 的回复:
fileName= new String(fileName.getBytes("GBK"),"8859_1");
tony4geek 2014-04-22
  • 打赏
  • 举报
回复
fileName= new String(fileName.getBytes("GBK"),"8859_1");
wang7535067 2014-04-22
  • 打赏
  • 举报
回复


String header = ServletActionContext.getRequest().getHeader(
				"User-Agent");
		// 如果是火狐
		if (header.contains("Firefox")) {
			filedisplay = new String(filedisplay.getBytes(), "iso8859-1");
		} else {
			// IE要用URL编码格式
			filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
		}
来到我身边 2014-04-22
  • 打赏
  • 举报
回复
解决了: 先在页面做下判断,判断是什么浏览器,然后传一个参数到servlet,进行用不同的编码方式: 火狐的: response.addHeader("Content-Disposition", "attachment;filename="+ new String(fileName.getBytes("GB2312"),"ISO8859-1")); IE: response.addHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(fileName, "UTF-8"));
引用 3 楼 rui888 的回复:
页面编码是什么啊?
及其他

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧