尝试了很多方法,发现tomcat可以识别chartText = new String(chartText.getBytes("ISO8859-1"), "utf-8");但是weblogic又不能识别,变成乱码。
最后解决方案是flex中编码,java端解码,tomcat和weblogic可以识别正常的中文,下载成功
代码如下:
flex编码使用encodeURIComponent
/*弹出数据导出*/
private function preExport():void
{
Alert.yesLabel = "是";
Alert.noLabel = "否";
var message:String = "您确定要导出所有的记录吗?";
Alert.show(message, "确认导出", Alert.YES | Alert.NO, this, exportHandler);
}
/*数据导出*/
//TODO
private function exportHandler(event:CloseEvent):void{
if(event.detail == Alert.YES)
{
var params:URLVariables=new URLVariables();
var request:URLRequest = new URLRequest("flash/exportServlet");
params.staticMonth = '201401';//月份
params.areaCode = level;//地域
params.income = income;//
params.chartText = encodeURIComponent("收入统计");
request.data = params;
navigateToURL(request,"_blank");
}
}
java端使用URLDecoder.decode解码
// 时间
String staticMonth = request.getParameter("staticMonth");
// 地域
String areaCode = request.getParameter("areaCode");
String income = request.getParameter("income");
// sheet名称
String chartText = request.getParameter("chartText");
// System.out.println("前台chartText:" + chartText );
// chartText = new String(chartText.getBytes("ISO8859-1"), "utf-8");
chartText = java.net.URLDecoder.decode(chartText, "UTF-8");