日期:2014-05-18  浏览次数:20801 次

Jasperreport中,通过servlet生成HTML页面报表为何乱码
小弟最近在学习此报表技术,但测试时,总是发现在通过servlet生成HTML报表时出现乱码,以下是报表的HTML页面的源代码:

<html>
<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>
</head>
<body text="#000000" link="#000000" alink="#000000" vlink="#000000">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<a name="JR_PAGE_ANCHOR_0_1"/>
<table style="width: 595px" cellpadding="0" cellspacing="0" border="0" bgcolor="white">
<tr>
  <td><img alt="" src="image.jsp?image=px" style="width: 105px; height: 1px;"/></td>
  <td><img alt="" src="image.jsp?image=px" style="width: 77px; height: 1px;"/></td>
</tr>
<tr valign="top">
  <td colspan="3"><img alt="" src="image.jsp?image=px" style="width: 185px; height:36px;"/></td>
  <td colspan="5"><span style="font-family: SansSerif; font-size: 24.0px;">? ? ? ? ? ?

</span></td>
  <td colspan="3"><img alt="" src="image.jsp?image=px" style="width: 169px; height: 36px;"/></td>
</tr>
<tr valign="top">
  <td><img alt="" src="image.jsp?image=px" style="width: 105px; height: 34px;"/></td>
  <td><span style="font-family: ??_GB2312; font-size: 18.0px;">User</span></td>
  <td colspan="3"><img alt="" src="image.jsp?image=px" style="width: 78px; height: 34px;"/></td>
</tr>
</table>
</table>
</body>
</html>

有以下几点疑问:
1.为什么生在HTML报表页面上,会出现??_GB2312,我设置的是仿宋_GB2312,中文为什么不识别
2.即使我将上述的一个Text字体设置成SansSerif,但其值在HTML还是显示为?????
3.image.jsp?image=px,这个px图片是怎么识别的

因为刚接触这个报表,不太清楚,肯请大家帮我一下!有线索朋友也可以提一下,下面是我的源码,我贴出来一部分,

response.setContentType("text/html; charset=GB2312");
....
....

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,new HashMap(),jsRet);
JRHtmlExporter exporter = new JRHtmlExporter();
HttpSession session = request.getSession();
Map imagesMap = new HashMap();
session.setAttribute("IMAGES_MAP", imagesMap);

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image.jsp?image=");
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "GB2312");
exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
exporter.exportReport()



------解决方案--------------------
1 字体选择
SanSung 也就是放松。 拼写可能有问题,你在字体里面仔细找就行了。

2 response.setCharacterEncoding("GBK"); // 加上这个!
------解决方案--------------------
response.setCharacterEncoding("GBK");
------解决方案--------------------
探讨
1楼是自动回复的,谁发帖他都统计一下然后回复

lz 改用utf-8试一试

------解决方案--------------------