java - Jersey REST WS - 请求正文 UTF-8

标签 java web-services rest jersey

我有简单的 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/

相关文章:

java - 荣格 :How to add different color edge in the same graph

java - java 类中的依赖属性

java - 如何解析 Play 2.3.x 中 WebService 调用的响应

java - Android - 如何上传视频/图像到 PHP 服务器

c# - 在jquery中加载大数据

java - 从 mysql 数据库获取时出现空指针异常

jquery - 显示来自 REST GET 响应的 HTML 页面

java - AngularJS $http.post 方法将 null 参数传递给 JAX-RS API

java - 从 XML 文件中提取一些节点

c# - 是否有用于 C# 的 Linq to REST 库