【发布时间】:2012-03-18 10:57:58
【问题描述】:
我正在尝试确保我的数据路径——一个通过 JDBC 将数据传入/传出 MySQL 数据库的 Tomcat servlet——直接处理 Unicode。
我已经能够验证我可以从数据库中读取/写入 Unicode。 (当我在 Eclipse 中调试 Tomcat 时,我看到从数据库中正确检索到的结果。)但是当我将浏览器指向我的 Tomcat servlet 时,像 "García" (=Garci{U+0301}a) 这样的字符串变成了 "Garci ?a”在浏览器中。
我正在使用此代码片段来初始化 XML 输出(request 和 response are ,它们使用 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;
}
我错过了什么吗?
【问题讨论】: