gpt4 book ai didi

Java + unicode + HttpServletResponse = 失败

转载 作者:行者123 更新时间:2023-11-29 03:49:18 25 4
gpt4 key购买 nike

我正在尝试确保我的数据路径——通过 JDBC 将数据传入/传出 MySQL 数据库的 Tomcat servlet——直接处理 Unicode。

我已经能够验证我可以从数据库读取/写入 Unicode。 (当我在 Eclipse 中调试 Tomcat 时,我看到从数据库中正确检索到的结果。)但是当我将浏览器指向我的 Tomcat servlet 时,像“García”(=Garci{U+0301}a) 这样的字符串变成“Garci ?a"在浏览器中。

我正在使用此代码片段来初始化 XML 输出(requestresponse 是 ,它使用 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;
}

我错过了什么吗?

最佳答案

该死,我想通了:

代替

response.setContentType("text/xml");

我需要做的:

response.setContentType("text/xml; charset=utf-8");

关于Java + unicode + HttpServletResponse = 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com