使用echart乱码的情况

本文详细描述了在使用ECharts图表时遇到中文乱码问题的解决过程,包括使用request方法替代链接传递数据,调整输出流编码顺序,以及解决中文乱码的具体步骤。

echart是百度推出的js图标包,最近刚好需要用到制表,就试用下,感觉不错。
最开始使用链接形式传递图标数据,代码如下:

response.setCharacterEncoding("utf-8");
response.sendRedirect("focus.jsp?result="+info);

在echart中,直接使用var param = window.location.search;获取参数。
使用这种形式的一个问题是带数据参数的链接地址是在地址栏直接显示的,因此换了request的方法:

info = URLEncoder.encode(URLEncoder.encode(info, "utf-8"));
request.setCharacterEncoding("utf-8");
request.setAttribute("result", info);
RequestDispatcher dispatcher = request.getRequestDispatcher("/focus.jsp");
dispatcher.forward(request, response);

在echart中,使用

var param = document.getElementById("result").value;
param = decodeURI(param).replace(">", "");

这里使用了replace因为参数最后会多出一个”>”符号,影响后面的解析;
但这时产生了一个问题,就是传递过来的参数都正常显示中文,但原本写在echart中的中文却显示出了乱码“???”。
纠结了很久,最后才发现是跳转的servlet中的PrintWirter out = esponse.getWriter();造成的问题。
删除这一句,问题解决。
或者调整顺序为:

response.setCharacterEncoding("UTF-8"); // 先指定输出流的编码 
PrintWriter out = response.getWriter(); // 再拿到输出对象 response.setContentType("text/html;charset=UTF-8"); 
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/test/test2.jsp"); requestDispatcher.forward(request, response);

问题解决

参考:http://blog.sina.com.cn/s/blog_698680f00100ltvs.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值