日期:2014-05-16  浏览次数:20343 次

JSP导EXCEL 某些数据会出现乱码情况
?

??????? 前些天给用户做一个系统,其报表用的JSP导出Excel,今天早上用户突然打电话说报表会出现乱码,我当时就愣了:怎么可能出现乱码问题,乱码一般情况都是编码不统一造成的,这种低级错误我应该是不会犯的,那是什么原因,数据问题还是其他的。赶紧打开电脑进行验证,可无论我怎么导,都没出现乱码,是用户搞错了吧,打电话过去确认,然后按用户的步骤操作,果然出现了乱码。当时就傻眼了,这怎么搞的?!第一反应就是这些数据中肯定有问题,从而造成导报表出现乱码。然后通过排除法最后找到了两笔数据,发现只要这两笔数据在一起,导出报表都是乱码,而这两笔分开单独导或是分开与其他数据导都不会出现乱码。这更加肯定了这是数据造成的乱码,于是我开始研究这两笔数据(全英文的)。可无论我怎么研究:去掉特殊字符,减少字数,都会得到无乱码的报表,但却始终无法彻底解决,于是我便这样一步步被引上了歧途。整整 一个上午,也请教过无数的高手,也与他们一起讨论。可都没结果。中午吃饭回来午觉都没睡,一直在那里研究着这两笔数据。最后无意中发现原来是生成的Excel是HTML而不再是JSP,我们应该重设HTML的编码而不是JSP页面的编码:代码如下

?

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@page import="com.global.cqe.dmd.model.DMDAppeProcModel"%>
<%@page import="java.math.BigDecimal"%>
<%@page import="com.global.cqe.dmd.model.ReportListModel"%>

?

只需改成HTML页面码即可

???

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

?

即不会出现上述情况