问题描述:昨天在开发过程中用struts2下载文件时,在下载的弹出框上显示的文件名居然是乱码。
问题分析:
<param name="contentType">text/plain</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${downloadFile}"</param>
<param name="bufferSize">4096</param>
这几个参数不用说了,struts2配置 返回结果为stream时的参数。
downloadFile 这个参数是action中需要配置的一个属性(如:private String downloadFile;),乱码就是在这里产生的了,琢磨着可能是流跟我设置的字符编码不一致所致。(后来发现是这样的:我设置的gbk,流是iso-8859-1)
解决办法: action中每个属性不都有getter/setter吗,改一下就行了
public String getDownloadFile() {
String file=downloadFile;
try {
file = new String(downloadFile.getBytes("gbk"),"iso-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return file;
}