朋友导出Excel时,文件名被乱码问题困扰,于是试了下,半天才知道解决方法,呵呵! 在Flex端需要对中文uri编码,java端接收的时候不是解码,同样是编码,具体代码如下, 希望用到的可以参考, 不明白的留言, 呵呵!
欢迎加入flex群: 124616997(可获得源码)
Servlet部分自己配置,Flex页面代码如下:
<fx:Script>
<![CDATA[
import flash.net.navigateToURL;
protected function getDown():void
{
var fileName:String=txtFileName.text;
if(!fileName=="")
{
var urlRequest:URLRequest=new URLRequest("./ExcelDownServlet?filename="+encodeURI(fileName));
navigateToURL(urlRequest,"_self");
}
}
]]>
</fx:Script>
<s:TextInput id="txtFileName" x="60" y="58" text="乘风破浪" focusIn="{txtFileName.text='';}" />
<s:Button id="fuck" x="207" y="58" label="下载Excel" click="getDown()"/>
Java端处理方法如下:
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String filename =req.getParameter("filename")+".xls";
filename = URLEncoder.encode(filename, "iso8859-1");//这里根据服务器的设置去修改参数
resp.setContentType("application/vnd.xls;charset=utf-8");
resp.setHeader("Content-Disposition", "attachment;filename="+filename);
这样每次导出的时候文件名都是中文,呵呵!
乱码总结:
1 以上是没有修改tomcat编码情况下,默认为iso8859-1!
2 使用中文路径时,有时需要修改tomcat 编码URIEncoding="UTF-8",或者在Java后台手动处理访问路径!