java - RestController 在 RequestBody 中接收到错误的字符集

标签 java spring-boot character-encoding spring-restcontroller

我有以下 API:

@ApiOperation(value = "Search product by text")
@PostMapping("/get/search")
public ResponseEntity<List<ShopProductDTO>> get(@RequestBody SearchProductRequestDTO search) {
    //searching product here using search.getSearchText() value
}

通过 postman 我发送:

{"searchText":"Утюг"}

但是我在日志中收到/看到的内容:

SearchProductRequestDTO{searchText='РЈС‚СРі'}

启用DEBUG后,我看到Http11InputBuffer日志正文:

{"searchText":"ГђВЈГ‘<U+0082>Г‘<U+008E>ГђВі"}

我所做的(没有一个有帮助):

  1. application.properties 中添加了以下属性
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.basename=messages
spring.messages.encoding=UTF-8
  • 公开CharacterEncodingFilter
  • @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public CharacterEncodingFilter charsetFilter() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
        return filter;
    }
    
  • 使用 -Dfile.encoding=UTF-8 参数执行 jar 文件

  • 在 Postman 中包含以下 header

  • accept-charset:utf-8
    content-type:application/json;charset=utf-8
    

    我还应该做什么?或者我错过了什么?

    最佳答案

    尝试将您的代码更改为:

    @ApiOperation(value = "Search product by text")
    @PostMapping(value="/get/search", consumes="application/json;charset=UTF-8")
    public ResponseEntity<List<ShopProductDTO>> get(@RequestBody SearchProductRequestDTO search) {
        //searching product here using search.getSearchText() value
    }
    

    改变就在你的行中
    @PostMapping(value="/get/search", consumes="application/json;charset=UTF-8")

    关于java - RestController 在 RequestBody 中接收到错误的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60416661/

    相关文章:

    java - 对于 Jhipster 生成的项目,H2 表未显示在 IntelliJ 中

    php - MySQLi 的编码问题

    python - 如何将问号而不是文本转换为西里尔字母?

    java - openssl smime - 通过 Java 解密 PEM 编码的文件

    Java ServerSocket 已绑定(bind)但未监听

    java - 如何从java打印字符串到Zebra kr203?

    character-encoding - 钛 ByteArray 图像 Blob

    java - 使用文档字段填充组合框

    java - Spring Boot 属性注入(inject)失败

    java - 如何在使用 spring Maven 插件构建时包含空目录?