MAR*_*REK 5 java spring http character-encoding spring-boot
我试图找到一些关于如何处理我的字符编码的信息RestController.
Spring似乎完全忽略了Content-Type标题中发送的字符集.无论使用此标头将哪个字符集发送到服务器,服务器都会尝试将其读取为UTF-8并使用字符集UTF-8发送响应.
这是一个GitHub存储库,其中包含一个重现此场景的演示:https://github.com/hawk1234/characterEncodingTest
有人能指出我在春季文档中描述的位置吗?我遇到了内容协商,但我认为这更多是关于响应格式而不是编码.
更新2018-11-01
我已经实施了一些测试,以更好地显示问题所在.Commit 86dc434351d7ee2c142afc8f389e7837810b19f6包括EncodingTest使用不同编码测试端点的类.
我也实现了我的编码处理(Commit a26c5da0b25fba8a40e3be41e967e6b1e5c4d546),但它是非常基本的实现,可能不考虑所有场景.我仍在寻找使用现有库的更简单的解决方案.
默认情况下字符集是UTF-8,MappingJackson2HttpMessageConverter是管理字符集的人。您可以通过实现 bean 并将 charSet 设置为 null 来覆盖。
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
jsonConverter.setObjectMapper(objectMapper);
jsonConverter.setDefaultCharset(null);
return jsonConverter;
}
Run Code Online (Sandbox Code Playgroud)
我在您的存储库pullRequestCharacterEncoding上创建了包含这些更改的拉取请求,并且运行良好。亲切的问候。
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |