我试图确保我的数据路径 - 一个Tomcat servlet通过JDBC将数据导入/导出MySQL数据库 - 直接处理Unicode。Java + unicode + HttpServletResponse =失败
我已经能够验证我可以从数据库读取/写入Unicode。 (当我在Eclipse中调试Tomcat时,我看到了从数据库中正确检索到的结果。)但是当我将浏览器指向Tomcat servlet时,类似“Garcí a”(= Garci {U + 0301} a)的字符串变成“Garci?a”在浏览器中。
我使用这段代码初始化XML输出(request
和response
是,它使用XMLStreamWriter,我宣布结果为UTF-8:
final protected HttpServletRequest request;
final protected HttpServletResponse response;
...
boolean handleRefreshMetadata()
{
String s = request.getParameter("ids");
Integer id = Integer.parseInt(s);
boolean b = refreshMetadata(id);
response.setContentType("text/xml");
try {
PrintWriter writer = response.getWriter();
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter xmlwriter = factory.createXMLStreamWriter(writer);
xmlwriter.writeStartDocument("UTF-8", "1.0");
xmlwriter.writeStartElement("response");
xmlwriter.writeAttribute("success", b ? "true" : "false");
if (b && (id != null))
{
loadArticleFromID(getConnection(), xmlwriter, id);
}
xmlwriter.writeEndDocument();
xmlwriter.flush();
xmlwriter.close();
} catch (IOException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
return b;
}
我缺少的东西