当前位置: 首页 > 知识库问答 >
问题:

响应的字符集不正确

唐伟
2023-03-14

我编写了一个方法,该方法应该在utf-8中以字符串类型返回有效的正文,但在发出请求后,我在UTF-16中得到响应。postman中的内容类型头是application/json。我在stackoverflow中搜索任何可能的解决方法,但任何解决方案都无济于事,包括这个主题(.我如何更改它以获得有效的主体?Thanx!

Headers, that i've got on response:
{Date=[Mon, 13 Apr 2020 19:13:38 GMT], Content-Type=[application/json; charset=utf-16], Server=[Kestrel], Transfer-Encoding=[chunked]}
    @PostMapping("/updateValues")
    public String getUpdateValuesRequest(@RequestParam(value = "secret") String secret,
                                         @RequestHeader HttpHeaders requestHeaders,
                                         @RequestBody String requestBody){
        return getUpdateValuesResponse(secret, requestHeaders, requestBody);
    }

    public String getUpdateValuesResponse(String secret, HttpHeaders requestHeaders, String requestBody) {
        String updateValuesUrl = "http://myservice.com/chunk/updateValues?secret={secret}";
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
        HttpEntity<String> entity = new HttpEntity<String>(requestBody, requestHeaders);
        ResponseEntity<String> response = restTemplate.exchange(updateValuesUrl, HttpMethod.POST, entity, String.class, secret);
        if (response.getStatusCode() == HttpStatus.OK) {
            logger.info("Request Successful.");
        } else {
            logger.info("Request Failed");
        }
        logger.info(response.getHeaders().toString());
        logger.info(response.getStatusCode().toString());
        logger.info("StatusCodeValue: " + response.getStatusCodeValue());
        logger.info(response.getBody());
        logger.info(response.getClass().toString());
        return response.getBody();
    }

共有1个答案

须衡虑
2023-03-14

通过为StringRightTPMessageConverter设置setWriteAcceptCharset(false)解决了这个问题。

 类似资料:
  • 在我的CentOS7工作站上,我有elasticsearch(ver.5.5.1)服务,按映像:docker.elastic.co/elasticsearch/elasticsearch:5.5.1。 我的工作站上的文件系统类型是XFS。 我有.tar存档文件/usr/share/elasticsearch/data/nodes/0/包含索引结构:(来自kibana的JSON) 开始记录我的JVM

  • 调用一个返回法语句子的API,所有重音字符都会显示为

  • 我正试图实现一个全屏幕响应的图像解决方案,具有以下松散的要求 0-600像素 经过一点挖掘,我决定使用尺寸: iPhone 6 我为每个屏幕大小创建了单独的图像(用于艺术方向),并使用了以下srcset代码 图像具有以下CSS(因此它的行为类似于背景:封面) 我把我的桌面显示器的尺寸调整得很小,并调整到全屏,图像被替换到正确的位置 然而,在我的手机和平板电脑上,它始终显示1920年的图像 理想情况

  • 我有一个Sencha Touch应用程序。我的一个商店使用ajax代理和json阅读器。从我的sinatra应用程序返回的JSON中的一些字符串偶尔包含以下字符:http://www.fileformat.info/info/unicode/char/2028/index.htm 虽然它是不可见的,但该字符在这里的第二个字符串中出现了两次,在句点和结尾引号之间: 尝试复制和粘贴“每个级别都需要逻辑

  • 我使用IBM worklight开发一个混合应用程序。在本地开发环境中,一切都很好。 还是用ISO-8859-1字符集获取数据,用UTF-8将数据插入数据库?

  • 问题内容: 如何在对UTF-8的回复中设置默认字符编码? 我已经试过了 还有这个 都不起作用-响应仍与标头一起发送 我想对所有text / html响应都执行此操作,理想情况下是使用代码而不是XML。我正在使用Jetty 9。 问题答案: Jetty文档声称它默认情况下使用UTF-8,但这似乎是一个谎言。如果执行normal ,则内容编码如下确定。 从content-type到content-en