使用Ajax调用Action获取XML字符串,其中包含中文,使用如下代码输出:
ServletOutputStream out = response.getOutputStream();
request.setAttribute("xmlTree", tree);
out.print(tree);
在JDK1.5平台运行一切正常,在JDK1.6平台运行抛出异常:
严重: Servlet.service() for servlet action threw exception
java.io.CharConversionException: Not an ISO 8859-1 character: 全
at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
at com.xjgc.rsm.web.action.ProblemtypeAction.createTypeTree(ProblemtypeAction.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
异常的大概意思是说非ISO-8859-1编码,确实,我使用的GBK。而且第一行就是
at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
问题可能出现在ServletOutputStream上,于是用PrintWriter替换了ServletOutputStream,运行正确,如:
PrintWriter pw = response.getWriter();
pw.print(tree);
现在就OK了
ServletOutputStream out = response.getOutputStream();
request.setAttribute("xmlTree", tree);
out.print(tree);
在JDK1.5平台运行一切正常,在JDK1.6平台运行抛出异常:
严重: Servlet.service() for servlet action threw exception
java.io.CharConversionException: Not an ISO 8859-1 character: 全
at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
at com.xjgc.rsm.web.action.ProblemtypeAction.createTypeTree(ProblemtypeAction.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
异常的大概意思是说非ISO-8859-1编码,确实,我使用的GBK。而且第一行就是
at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
问题可能出现在ServletOutputStream上,于是用PrintWriter替换了ServletOutputStream,运行正确,如:
PrintWriter pw = response.getWriter();
pw.print(tree);
现在就OK了