今天碰到一个很奇怪的问题,就是我们的erp系统在导出excel时,用谷歌,IE,火狐等浏览器导出时都正常,但用QQ浏览器就不行,花了很长时间找原因,原来是jsp中填入的中文在QQ浏览器中使用时,传递到后台action中后变成了乱码,导致导出数据为空。
一般来说我们在导出excel时,前台js都是用window.open(url),如下:
function exportAnalyse(){
if(checkForm()==false){
return false;
}
var flowKey = $("#flowKey").val();
var flowStatus = $("#flowStatus").val();
var departNo = $("#departNo").val();
var bxItemName = $("#bxItemName").val();
var startDate = $("#startDate").val();
var endDate = $("#endDate").val();
var billCode = $("#billCode").val();
var workerinfoName = $("#workerinfoName").val();
var productCode = $("#productCode").val();
var flowStartDate = $("#flowStartDate").val();
var flowEndDate = $("#flowEndDate").val();
var remarkSearch = $("#remarkSearch").val();
var url ="export_worker_qt_cl_analyse.do?departNo="+departNo+"&flowKey="+flowKey+"&flowStatus="+flowStatus+"&bxItemName="+bxItemName;
url = url + "&billCode="+billCode+ "&workerinfoName="+workerinfoName+"&startDate="+startDate+"&endDate="+endDate;
url = url + "&productCode="+productCode+"&flowStartDate="+flowStartDate+"&flowEndDate="+flowEndDate+"&remarkSearch="+remarkSearch;
window.open(url);
}
在QQ浏览器中,使用这种方式url中的中文还是正常的,因为我们用的是spring mvc,前台字段直接映射到action中的某个类中后,中文就变成了乱码,也不知道是为什么???
后来我发现,换一种方式提交就不会乱码了,如下:
function exportAnalyse(){
if(checkForm()==false){
return false;
}
document.listForm.action="<%=basePath%>/bx/export_worker_qt_cl_analyse.do";
document.listForm.submit();
}
使用这种form表单提交的方式QQ浏览器导出就正常了,并且这种方式也不用拼那么多参数。