论坛首页 入门技术论坛

WebLogic导出csv文件乱码问题的解决。

浏览 2383 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-25  
近日在做项目的时候发现,RHE5、WebLogic、JDK环境下生成的UTF-8文件下载在本地无法被Excel读取。本地Tomcat生成的文件格式为ANSI的,所以读取没有问题。貌似是因为Excel对UTF-8的兼容性不好。Excel读取ANSI和GBK编码格式的文件都没有问题,于是想到了在下载的时候将文件编码格式转换成为GBK格式。下载页面如下
	File file = (File) request.getAttribute("file");
	String targetName = (String) request.getAttribute("targetName");
	//下载的时候显示的文件名
	String fileName = targetName + "筛选数据.csv";

	// 读到流中
	FileInputStream inStream = new FileInputStream(file);// 文件的存放路径
	
	InputStreamReader isr = new InputStreamReader(inStream);
	
	OutputStreamWriter osw = null;
	
	// 设置输出的格式
	response.reset();
	response.setCharacterEncoding("UTF-8");
	response.setContentType("application/vnd.ms-excel"+";charset=UTF-8");
	response.setHeader("Content-Disposition", "attachment; filename="
			+ URLEncoder.encode(fileName, "UTF-8"));

	// 循环取出流中的数据
	char[] b = new char[1024];
	int len;
	
	try {
		//写的时候直接转码
		osw = new OutputStreamWriter(response.getOutputStream(),"gbk");

		while((len=isr.read(b,0,b.length))!=-1){
			osw.write(b,0,len);
		}
		
	} catch (Exception e) {
		e.printStackTrace();
	}finally{
		
		if(isr!=null){
			isr.close();
		}
		
		if(osw!=null){
			osw.close();
		}
		
		//防止与getWriter方法冲突
		out.clear();
		out = pageContext.pushBody();
	}

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics