gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:03:01 25 4
gpt4 key购买 nike

我有以下 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com