POST JSON请求中的字符编码

时间:2015-10-14 14:14:59

标签: java rest jax-rs cxf

我正在向我的应用程序发送POST JSON请求。

POST /CharSetTest/Test HTTP/1.1
Host: localhost:8090
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 1637b92b-5896-4765-63c5-d04ad73ea9f1

{
  "SampleRequest": {
    "FullName": "関連当"
  }
}

我的CXF JAXRS消费者定义如下。

@POST
@Produces("application/json; charset=UTF-8")
@Consumes("application/json; charset=UTF-8")
public Response testCharSet(@Encoded String jsonBody);

但是我作为POST请求发送的日文字符(关连当)没有编码,导致一些垃圾字符“é¢é£å½äºè

使用SoapUI导致“?????”字符。

此垃圾字符因客户端与客户端的不同而不同。我如何编码我的POST请求?

5 个答案:

答案 0 :(得分:7)

将内容类型设置为:

"application/json;charset=UTF-8" 

在您正在使用的应用程序中发送帖子请求时。 你可以找到"内容类型"在该应用程序中URL的标题中。

答案 1 :(得分:3)

这里没有答案对我有用。

我的内容类型已经设置为“ application / json; charset = UTF-8”,但是标头中的accept-encoding设置引起了错误:

在标题下禁用accept-encoding设置:

enter image description here

当我停用上面的最后一行时,一切正常!希望能对某人有所帮助。

答案 2 :(得分:1)

我遇到了类似的问题,并通过将HttpServletResponse实例的字符编码设置为utf-8来解决了该问题:

response.setCharacterEncoding("utf-8");

答案 3 :(得分:1)

我认为您需要使用json_encode()这样的选项

json_encode($data,JSON_UNESCAPED_UNICODE);

邮递员以您的语言格式返回邮件。

答案 4 :(得分:0)

尝试

@RequestMapping(value = "/play", method = RequestMethod.POST, produces={"application/json; charset=UTF-8"})

如上所述将produces={"application/json; charset=UTF-8"}设置为您的@RequestMapping