@ResponseBody和语言导致错误的编码

时间:2018-12-18 17:27:40

标签: java spring spring-mvc jaxb marshalling

我有多个返回JSON对象的REST端点。对于大多数语言环境,响应都是正确的(响应中正确显示了所有符号,并且Content-Type为application / json)。

如果我为Accept-Language标头提供值“ en_NL”,则Content-Type标头将更改为“ application / json; charset = ISO-8859-1。响应主体还包含错误的编码符号。(例如€变成â€)。

我不确定内容类型标头在哪里更改,并且在任何filter / config或jaxb中都找不到跟踪。

对于(取消)编组,我使用jaxb。该应用程序是使用Spring 4.1.7构建的,并托管在tomcat服务器上。

控制器示例:

    @RequestMapping(value = "/by-bundle", method = RequestMethod.GET)
    @ResponseBody
    public SbMessageMap getByBundleCodes(final @RequestParam("groups") String[] groups) {
        // return json object here
    }

谢谢!

1 个答案:

答案 0 :(得分:2)

您是否尝试在 @RequestMapping 中使用Produces参数设置字符集?

@RequestMapping(value = "/by-bundle", method = RequestMethod.GET, produces = "application/json; charset=UTF-8")