怎么设定从xml转换成html后的缺省字符集?
jafan 2002-12-16 05:58:42 我用下面的class通过JAXP将xml文件转换成html文件,如果文件中含有中文,转换成html文件后用IE打开,中文部分为乱码。用记事本打开html文件,发现文件字符集为UTF-8格式,这时把它另存为ANSI字符集格式,则正常。
非常着急地请大虾指点:下面的代码怎么修改才能使转换成的html文件字符集默认为ANSI?如果不能实现这种设定,通过编程用什么方法可以实现UTF-8向ANSI的自动转换?万分感谢!!!
------------
transformer.java:
//this program is used to transfrom xml format into html format with JAXP.
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
public class transformer {
public static void main(String args[]) throws TransformerConfigurationException,TransformerException,FileNotFoundException {
String stylefile="D:\\scc.xsl";
String xmlfile="D:\\scc.xml";
String outfile="D:\\scc.htm";
TransformerFactory factory=TransformerFactory.newInstance();
StreamSource stylesheet=new StreamSource(stylefile);
StreamSource xmlDoc=new StreamSource(xmlfile);
StreamResult result=new StreamResult(new FileOutputStream(outfile));
Transformer transFormer=factory.newTransformer(stylesheet) ;
transFormer.transform(xmlDoc,result) ;
}
}
----------------
测试例子:
--------------
scc.xml
<?xml version="1.0" encoding="GB2312"?>
<games>
<game name="XML Inbaders" genre="shooter">
<description>第一种</description>
<cds>1</cds>
<memory-cards>1</memory-cards>
</game>
<game name="A Node in the XPath" genre="rpg">
<description>第二种</description>
<cds>4</cds>
<memory-cards>2</memory-cards>
</game>
<game name="XPath Racers" genre="racing">
<description>第三种</description>
<cds>1</cds>
<memory-cards>1</memory-cards>
</game>
</games>
--------------
scc.xsl:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr><td>Name</td><td>Genre</td><td># Cd</td><td>Memory Cards</td><td>Description</td></tr>
<xsl:for-each select="games/game">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@genre"/></td>
<td><xsl:value-of select="./cds"/></td>
<td><xsl:value-of select="./memory-cards"/></td>
<td><xsl:value-of select="./description"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>