今天在做Excel导出时,前台传参到后台controller,出现中文乱码,在网上搜了很多种办法,都没能解决掉,总结了下,最后在同事的提醒下,终于找到那里的问题了,和大家分享下中文乱码处理的几种办法,希望能够帮助到大家。
1.tomcat 工程中conf下面server.xml 设置<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
这个办法应该是网上说的最多的
2. String jqajlb= new String(request.getParameter("jqajlb").getBytes("iso-8859-1"),"UTF-8");
这是一种解决办法,原理的话 ,可以参考以下链接http://blog.youkuaiyun.com/skiffloveblue/article/details/7869264 挺详细的解释
3.第三种办法也就是解决我问题的方法:代码共享
前台页面方法:
function VIEW_ZFBA_YCJC_ListView_expExcel()
{
try
{
var lv='VIEW_ZFBA_YCJC.ListView';
tb='grid';
id='lv';
var vq= VIEW_ZFBA_YCJC_ListView_queryParams;
var fm=document.createElement('form');
fm.id='2FDB87153A2842DB80D2A308F276F63D';
var jqajlb=encodeURI(encodeURI(vq['jqajlb']));
fm.method='post';
fm.action = '<%=path%>/ycjc/export2jExcel?state='+vq['state']+'&jqajlb='+jqajlb+'&jcdid='+vq['jcdid']+'&starttime='+vq['ycsjfssj']+'&endtime='+vq['ycsjfssj1']+'&badwdm='+vq['badwdm']+'&jcd='+vq['jcd'];
document.body.appendChild(fm);
var b=document.getElementById('2FDB87153A2842DB80D2A308F276F63D');
后台:
String jqajlb=URLDecoder.decode(getRequest().getParameter("jqajlb"), "UTF-8");
应该还有其他比较好的解决办法,欢迎大家补充,谢谢