Я пытаюсь убедиться, что мой путь данных - сервлет Tomcat, получающий данные в/из базы данных MySQL через JDBC - обрабатывает Unicode напрямую.Java + unicode + HttpServletResponse = fail
Я смог проверить, что я могу читать/писать Юникод из базы данных. (Когда я отлаживаю Tomcat в Eclipse, я вижу результат, полученный из базы данных правильно.) Но когда я указываю свой браузер на моем сервлете Tomcat, строка, подобная «Garc & iacute; a» (= Garci {U + 0301} 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;
}
ли я что-то отсутствует