我試圖確保我的數據路徑 - 一個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;
}
我缺少的東西