EntityResponse字符集编码错误

时间:2017-02-23 15:22:37

标签: java spring rest spring-mvc

在我的REST API中,每当用户尝试访问非现有资源时,我都会返回404。

但是,Firefox不会显示“404错误”页面,但会抱怨字符编码。

这是我的控制器代码:

@RequestMapping("/countries/{countryId}")
public ResponseEntity<?> country(@PathVariable Integer countryId) {
    return countriesService.getCountry(countryId);
}

从服务实体调用此方法:

public ResponseEntity<?> getCountry(Integer countryId) {
    Country country = countryDAO.findById(countryId);
    if (country == null)
        return ResponseEntity.notFound().build();
    return ResponseEntity.ok(new DetailedCountryJson(country));
}

DetailedCountryJson是一个简单的json对象。所以当我访问

localhost:8080/countries/1

我得到了与这个国家相关的json,但是当我尝试使用不在数据库中的id时,我得到了

the error displayed by firefox

它说

  

未声明纯文本文档的字符编码。如果文档包含US-ASCII范围之外的字符,则文档将在某些浏览器配置中使用乱码文本进行渲染。需要在传输协议中声明文件的字符编码,或者文件需要使用字节顺序标记作为编码签名。

1 个答案:

答案 0 :(得分:2)

您可以使用response.setContentType("text/plain;charset=UTF-8"); 请参阅此link