最近在开发一个程序时,因为要用到报表。所以移植了一个phpreports类。完成集成以后,发现报表中的中文都是乱码。经过仔细分析是编码问题,需要转化成utf8。报表 输出才能正确识别中文。希望大家在开发过程中注意这个小问题。
代码如下:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="UTF-8" indent="no"/>
<xsl:param name="css"/>
<xsl:template match="/RP">
<html>
<head>
<xsl:if test="string-length(@CSS)>0 or string-length($css)>0">
<LINK REL="stylesheet" TYPE="text/css">
<xsl:attribute name="HREF">
<xsl:choose>
<xsl:when test="string-length($css)>0">
<xsl:value-of select="$css"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@CSS"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</LINK>
</xsl:if>
<xsl:for-each select="CSS">
<LINK REL="stylesheet" TYPE="text/css">
<xsl:attribute name="HREF">
<xsl:value-of select="."/>
</xsl:attribute>
<xsl:if test="string-length(@MEDIA)>0">
<xsl:attribute name="MEDIA">
<xsl:value-of select="@MEDIA"/>
</xsl:attribute>
</xsl:if>
</LINK>
</xsl:for-each>
<script language="JavaScript">
function goToBookmark(iBookmark) {
parent.frames[1].location.hash="#"+iBookmark;
}
</script>
</head>
<body>
<table>
<xsl:apply-templates select="/RP/PG/R/C/BK"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="BK">
<tr>
<td>
<xsl:if test="string-length(@CC)>0">
<xsl:attribute name="CLASS">
<xsl:value-of select="@CC"/>
</xsl:attribute>
</xsl:if>
<a target="report">
<xsl:attribute name="HREF">
<xsl:text>javascript://</xsl:text>
</xsl:attribute>
<xsl:if test="string-length(@TC)>0">
<xsl:attribute name="CLASS">
<xsl:value-of select="@TC"/>
</xsl:attribute>
</xsl:if>
<xsl:attribute name="onClick">goToBookmark(<xsl:value-of select="@HREF"/>);</xsl:attribute>
<xsl:value-of select="text()"/>
</a>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>