我有一个 utf-8 编码的字符串,并希望通过 java http servlet 将此字符串作为 http 请求的答案,但浏览器只接收到混乱的特殊字符。
如果我通过 FileOutputStream 将相同的字符串打印到文件中,则字符处理正确。
因此,HttpServletResponse-Writer 将例如德语字符“Ä”从正确的符号 0xC3A4 更改为 0xC383C2A4。
在下面的代码中,“response”是 HttpServletResponse 对象,“result”是字符串。
try {
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/xml; utf-8");
PrintWriter out = response.getWriter();
out.write(result);
out.close();
Writer fileOut = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("outputfile")));
fileOut.write(result);
fileOut.close();
} catch (IOException e1) {
e1.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
为什么 HttpServletResponse 操纵字符串,而不像 BufferedWriter(OutputStreamWriter(FileOutputStream)) 那样直接传递字符编码?
谢谢,化疗。