我有简单的 Jersey REST 网络服务:
@POST
@Path("/label")
@Consumes(MediaType.TEXT_HTML)
public Response setLabels(String requestBody) {
System.out.println(requestBody);
......
}
请求传递一些带有“特殊”非英文字符的文本
[{"За обекта"}]
我可以在 Firebug 中看到请求通过了正确的 UTF-8 内容和字符集
Content-Type text/plain; charset=UTF-8
虽然在服务器输出上没有呈现理想的字符集:
[{"?? ??????"}]
知道出了什么问题吗?如何在服务器端以正确的字符集捕获文本?
最佳答案
System.out
是一个 PrintStream
。它使用平台默认编码,通常不是 UTF-8。所以你得到了正确的数据,当你把它打印到控制台时,它只是被破坏了。
几周前我遇到了完全相同的问题 - 在我弄清楚之前让我抓狂。更糟糕的是,我实际上 在代码的另一部分中有一个与编码相关的错误。
关于java - Jersey REST WS - 请求正文 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872913/