我正在更新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的任何想法?
将以下属性添加到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