如何使spring boot默认为application / json; charset = utf-8而不是application / json; charset = iso-8859-1

问题描述 投票:0回答:1

我正在更新spring-boot从1.3.6到2.1.3,而在响应之前有内容类型application/json;charset=UTF-8,现在我得到了iso-8859-1的字符集。

我想要utf 8。

我的控制器看起来像这样:

@Controller
public class MyController {
    @RequestMapping(value={"/myService/{serviceId}"}, method=RequestMethod.POST, consumes="application/json")
    public ResponseEntity<Void> handlePostServiceId(final InputStream requestInputStream,
            @PathVariable String serviceId,
            final HttpServletRequest servletRequest,) {
       <$businessLogic>
       return new ResponseEntity<>(new HttpHeaders(), HttpStatus.ACCEPTED);
}

如果我在produces= MediaType.APPLICATION_JSON_UTF8_VALUE中包含@RequestMapping,我可以让它返回utf-8,但我只想设置一次,而不是每个API。

我也尝试过添加

@Override
    public void configureContentNegotiation(
         ContentNegotiationConfigurer configurer) {
         configurer.defaultContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
    }

我在这里建议的WebMvcConfigurer:https://stackoverflow.com/a/25275291/2855921但是这破坏了我的可用性api,它消耗了普通/文本内容类型。

我还确保我的请求是UTF-8,因此它不仅反映了我给出的格式。

关于如何将整个项目的字符集设置为UTF-8的任何想法?

spring spring-boot configuration
1个回答
0
投票

将以下属性添加到application.properties文件:

# Charset of HTTP requests and responses. Added to the "Content-Type" 
#header if 
#not set explicitly.
spring.http.encoding.charset=UTF-8
# Enable http encoding support.
spring.http.encoding.enabled=true
# Force the encoding to the configured charset on HTTP requests and responses.
spring.http.encoding.force=true
© www.soinside.com 2019 - 2024. All rights reserved.