gpt4 book ai didi

json - 字符集编码 Tomcat Windows/JBoss Linux

转载 作者:行者123 更新时间:2023-11-28 22:44:58 24 4
gpt4 key购买 nike

我有 2 台服务器:1 台在 Windows 中的 Tomcat 6 和一台在 Linux 中的 JBoss 5。

将 JSON (applicatio/json) 写入 ouputstream 时,我在 Tomcat 中得到了特殊字符(Á、á 等),但在 JBoss 中却出错了。

这就是我对输出流的处理方式:

protected void writeToOutputStream(String response, String tag) {
ServletOutputStream outputStream = null;
try {
logInfo("Writing to output stream");
outputStream = httpresponse.getOutputStream();
outputStream.write(response.getBytes(), 0, response.getBytes().length);
outputStream.flush();
} catch (IOException ex) {
logError("Could not write response into output stream", ex);
} finally {
try {
outputStream.close();
} catch (IOException ex) {}
}
}

如果我强制使用字符集

httpresponse.setCharacterEncoding("utf-8");

在 JBoss 中可以,但在 tomcat 中不行...

知道如何解决这个问题吗?

最佳答案

response.getBytes() 使用平台默认编码将 String 转换为字节,并且 Windows (CP-1252) 和 Linux 机器 (utf-8) 上的编码很可能不同。

您应该将编码(最好是 'utf-8' )传递给 getBytes(),该编码必须与您的 content-type 中指定为 charset 的编码相同响应 header (上面代码中的 utf-8)。

作为旁注,您写入 Outpustream 和两次调用 getBytes() 的方式非常低效。如果您想保持代码小而高效,请使用 Apache commons-io 和 IOUtils.copy() 等实用程序来操作流。

关于json - 字符集编码 Tomcat Windows/JBoss Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825967/

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