xslt理加上<xsl:output encoding="gb2312"/> 加上上面的编码后输出到标准输出是正确的中文! 但 PrintWriter out =response.getWriter();StreamResult result = new StreamResult(out); transformer.transform(source, result); 以上是乱码 result = new StreamResult(System.out); transformer.transform(source, result); 这儿正确应怎样解决 在servlet里面输出还是乱码???
// Use a Transformer for output TransformerFactory tFactory = TransformerFactory.newInstance(); StreamSource stylesource = new StreamSource("http://wind/egold/xsl/articleClass.xsl"); Transformer transformer = tFactory.newTransformer(stylesource);
DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(out); 在帮着看看
加上上面的编码后输出到标准输出是正确的中文!
但
PrintWriter out =response.getWriter();StreamResult result = new StreamResult(out);
transformer.transform(source, result);
以上是乱码
result = new StreamResult(System.out);
transformer.transform(source, result);
这儿正确应怎样解决
在servlet里面输出还是乱码???
response.setContentType("text/html; charset=gb2312");
response.setContentType("text/html; charset=gb2312");
我加过了还是不行!PrintWriter out=response.getWriter();
response.setContentType("text/xml ;charset=GB2312");
Document document;
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse("http://wind/egold/template/articleClass.xml");
// Use a Transformer for output
TransformerFactory tFactory =
TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource("http://wind/egold/xsl/articleClass.xsl");
Transformer transformer = tFactory.newTransformer(stylesource);
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(out);
在帮着看看
<%@page contentType="text/xml; charset=gb2312"%>
<%@page import="javax.xml.transform.*, javax.xml.transform.stream.*, java.io.*"%>
<%
String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+ "\n<Class>"
+ "\n<Order Name=\"TINAMIFORMES\">"
+ "\n <Family Name=\"TINAMIDAE\">"
+ "\n <Species Scientific_Name=\"Tinamus major\"> ÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄ ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n <Species Scientific_Name=\"Nothocercus\">ÖÐÎÄÖÐÎÄ ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus soui\">LittleÖÐÎÄÖÐÎÄTinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus cinnamomeus\">ÖÐÎÄÖÐÎÄ Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-ÖÐÎÄÖÐÎÄ Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus kerriae\">Choco ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n </Family>"
+ "\n </Order>"
+ "\n</Class>"
+ "\n";
String xsl = "<?xml version=\"1.0\" encoding=\"gb2312\"?> "
+ "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
+ " <xsl:output method=\"xml\" indent=\"yes\" encoding=\"gb2312\"/>"
+ "<xsl:template match=\"Class\">"
+ "<BirdInfo>"
+ " <xsl:apply-templates select=\"Order\"/>"
+ "</BirdInfo>"
+ "</xsl:template>"
+ "<xsl:template match=\"Order\">"
+ "Order isÖÐÎÄÖÐÎÄ: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Family\"/><xsl:text>"
+ "</xsl:text>"
+ "</xsl:template>"
+ "<xsl:template match=\"Family\">"
+ " ÖÐÎÄÖÐÎÄ is: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | SubFamily | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"SubFamily\">"
+ " ÖÐÎÄÖÐÎÄ is <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"Species\">"
+ " <xsl:choose>"
+ " <xsl:when test=\"name(..)='SubFamily'\">"
+ " <xsl:text> </xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:when>"
+ " <xsl:otherwise>"
+ " <xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:otherwise>"
+ " </xsl:choose>"
+ "</xsl:template>"
+ "</xsl:stylesheet>"; TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new StringReader(xsl)));
t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
%>
<%@page contentType="text/xml; charset=gb2312"%>
<%@page import="javax.xml.transform.*, javax.xml.transform.stream.*, java.io.*"%>
<%
String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+ "\n<Class>"
+ "\n<Order Name=\"TINAMIFORMES\">"
+ "\n <Family Name=\"TINAMIDAE\">"
+ "\n <Species Scientific_Name=\"Tinamus major\"> 中文中文中文中文中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Nothocercus\">中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus soui\">Little中文中文Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus cinnamomeus\">中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus kerriae\">Choco 中文中文.</Species>"
+ "\n </Family>"
+ "\n </Order>"
+ "\n</Class>"
+ "\n";
String xsl = "<?xml version=\"1.0\" encoding=\"gb2312\"?> "
+ "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
+ " <xsl:output method=\"xml\" indent=\"yes\" encoding=\"gb2312\"/>"
+ "<xsl:template match=\"Class\">"
+ "<BirdInfo>"
+ " <xsl:apply-templates select=\"Order\"/>"
+ "</BirdInfo>"
+ "</xsl:template>"
+ "<xsl:template match=\"Order\">"
+ "Order is中文中文: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Family\"/><xsl:text>"
+ "</xsl:text>"
+ "</xsl:template>"
+ "<xsl:template match=\"Family\">"
+ " 中文中文 is: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | SubFamily | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"SubFamily\">"
+ " 中文中文 is <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"Species\">"
+ " <xsl:choose>"
+ " <xsl:when test=\"name(..)='SubFamily'\">"
+ " <xsl:text> </xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:when>"
+ " <xsl:otherwise>"
+ " <xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:otherwise>"
+ " </xsl:choose>"
+ "</xsl:template>"
+ "</xsl:stylesheet>"; TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new StringReader(xsl)));
t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
%>
但放到servlet里面执行一下就成这样的了!如果编码的话应该在什么地方编码?
servlet里面的代码如下我用的是tomcat的4.03
你用的什么,不会出现问题吗? PrintWriter out=response.getWriter();
response.setContentType("text/html; charset=gb2312");
String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+ "\n<Class>"
+ "\n<Order Name=\"TINAMIFORMES\">"
+ "\n <Family Name=\"TINAMIDAE\">"
+ "\n <Species Scientific_Name=\"Tinamus major\"> 中文中文中文中文中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Nothocercus\">中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus soui\">Little中文中文Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus cinnamomeus\">中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus kerriae\">Choco 中文中文.</Species>"
+ "\n </Family>"
+ "\n </Order>"
+ "\n</Class>"
+ "\n";
String xsl = "<?xml version=\"1.0\" encoding=\"gb2312\"?> "
+ "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
+ " <xsl:output method=\"xml\" indent=\"yes\" encoding=\"gb2312\"/>"
+ "<xsl:template match=\"Class\">"
+ "<BirdInfo>"
+ " <xsl:apply-templates select=\"Order\"/>"
+ "</BirdInfo>"
+ "</xsl:template>"
+ "<xsl:template match=\"Order\">"
+ "Order is中文中文: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Family\"/><xsl:text>"
+ "</xsl:text>"
+ "</xsl:template>"
+ "<xsl:template match=\"Family\">"
+ " 中文中文 is: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | SubFamily | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"SubFamily\">"
+ " 中文中文 is <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"Species\">"
+ " <xsl:choose>"
+ " <xsl:when test=\"name(..)='SubFamily'\">"
+ " <xsl:text> </xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:when>"
+ " <xsl:otherwise>"
+ " <xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:otherwise>"
+ " </xsl:choose>"
+ "</xsl:template>"
+ "</xsl:stylesheet>"; TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new StringReader(xsl)));
t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
import javax.servlet.*;
import javax.servlet.http.*;import javax.xml.transform.*;
import javax.xml.transform.stream.*;/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/public class ABC extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
OutputStream out=response.getOutputStream();
String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+ "\n<Class>"
+ "\n<Order Name=\"TINAMIFORMES\">"
+ "\n <Family Name=\"TINAMIDAE\">"
+ "\n <Species Scientific_Name=\"Tinamus major\"> ÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄÖÐÎÄ ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n <Species Scientific_Name=\"Nothocercus\">ÖÐÎÄÖÐÎÄ ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus soui\">LittleÖÐÎÄÖÐÎÄTinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus cinnamomeus\">ÖÐÎÄÖÐÎÄ Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-ÖÐÎÄÖÐÎÄ Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus kerriae\">Choco ÖÐÎÄÖÐÎÄ.</Species>"
+ "\n </Family>"
+ "\n </Order>"
+ "\n</Class>"
+ "\n";
String xsl = "<?xml version=\"1.0\" encoding=\"gb2312\"?> "
+ "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
+ " <xsl:output method=\"xml\" indent=\"yes\" encoding=\"gb2312\"/>"
+ "<xsl:template match=\"Class\">"
+ "<BirdInfo>"
+ " <xsl:apply-templates select=\"Order\"/>"
+ "</BirdInfo>"
+ "</xsl:template>"
+ "<xsl:template match=\"Order\">"
+ "Order isÖÐÎÄÖÐÎÄ: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Family\"/><xsl:text>"
+ "</xsl:text>"
+ "</xsl:template>"
+ "<xsl:template match=\"Family\">"
+ " ÖÐÎÄÖÐÎÄ is: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | SubFamily | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"SubFamily\">"
+ " ÖÐÎÄÖÐÎÄ is <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"Species\">"
+ " <xsl:choose>"
+ " <xsl:when test=\"name(..)='SubFamily'\">"
+ " <xsl:text> </xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:when>"
+ " <xsl:otherwise>"
+ " <xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:otherwise>"
+ " </xsl:choose>"
+ "</xsl:template>"
+ "</xsl:stylesheet>"; TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new StringReader(xsl)));
t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
} catch (Exception e) {
e.printStackTrace();
} }
}
import javax.servlet.*;
import javax.servlet.http.*;import javax.xml.transform.*;
import javax.xml.transform.stream.*;/**
* The simplest possible servlet.
*
* @author James Duncan Davidson
*/public class ABC extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
OutputStream out=response.getOutputStream();
String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"
+ "\n<Class>"
+ "\n<Order Name=\"TINAMIFORMES\">"
+ "\n <Family Name=\"TINAMIDAE\">"
+ "\n <Species Scientific_Name=\"Tinamus major\"> 中文中文中文中文中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Nothocercus\">中文中文 中文中文.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus soui\">Little中文中文Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus cinnamomeus\">中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus boucardi\">Slaty-中文中文 Tinamou.</Species>"
+ "\n <Species Scientific_Name=\"Crypturellus kerriae\">Choco 中文中文.</Species>"
+ "\n </Family>"
+ "\n </Order>"
+ "\n</Class>"
+ "\n";
String xsl = "<?xml version=\"1.0\" encoding=\"gb2312\"?> "
+ "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
+ " <xsl:output method=\"xml\" indent=\"yes\" encoding=\"gb2312\"/>"
+ "<xsl:template match=\"Class\">"
+ "<BirdInfo>"
+ " <xsl:apply-templates select=\"Order\"/>"
+ "</BirdInfo>"
+ "</xsl:template>"
+ "<xsl:template match=\"Order\">"
+ "Order is中文中文: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Family\"/><xsl:text>"
+ "</xsl:text>"
+ "</xsl:template>"
+ "<xsl:template match=\"Family\">"
+ " 中文中文 is: <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | SubFamily | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"SubFamily\">"
+ " 中文中文 is <xsl:value-of select=\"@Name\"/>"
+ " <xsl:apply-templates select=\"Species | text()\"/>"
+ "</xsl:template>"
+ "<xsl:template match=\"Species\">"
+ " <xsl:choose>"
+ " <xsl:when test=\"name(..)='SubFamily'\">"
+ " <xsl:text> </xsl:text><xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:when>"
+ " <xsl:otherwise>"
+ " <xsl:value-of select=\".\"/><xsl:text> </xsl:text><xsl:value-of select=\"@Scientific_Name\"/>"
+ " </xsl:otherwise>"
+ " </xsl:choose>"
+ "</xsl:template>"
+ "</xsl:stylesheet>"; TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(new StreamSource(new StringReader(xsl)));
t.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
} catch (Exception e) {
e.printStackTrace();
} }
}