我有一个默认设置的Tomcat 7和所有与java相关的配置为使用utf-8。Tomcat的JspWriter编码不正确
这不起作用(UTF-8字符错位):
<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%
URL target = new URL("http://en.wikipedia.org/wiki/Main_Page");
Reader input = new BufferedReader(new InputStreamReader(target.openStream()));
StringWriter buffer = new StringWriter();
char[] chrs = new char[1024 * 4];
int n = 0;
while (-1 != (n = input.read(chrs)))
{
buffer.write(chrs, 0, n);
}
StringReader reader = new StringReader(buffer.toString());
n = 0;
while (-1 != (n = reader.read(chrs)))
{
out.write(chrs, 0, n);
}
%>
这种做法,但日志IllegalStateExceptions:
<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%
URL target = new URL("http://en.wikipedia.org/wiki/Main_Page");
Reader input = new BufferedReader(new InputStreamReader(target.openStream()));
StringWriter buffer = new StringWriter();
char[] chrs = new char[1024 * 4];
int n = 0;
while (-1 != (n = input.read(chrs)))
{
buffer.write(chrs, 0, n);
}
StringReader reader = new StringReader(buffer.toString());
OutputStreamWriter output = new OutputStreamWriter(response.getOutputStream());
n = 0;
while (-1 != (n = reader.read(chrs)))
{
output.write(chrs, 0, n);
}
%>
我一直在寻找,但没有找到答案。这是Tomcat中的一个错误,还是我缺少的东西?
这是我可以写出的最小的例子,展示了这个问题,而不涉及任何数据库。真正的代码看起来不像它。 – OrangeDog 2010-11-22 23:08:32