gpt4 book ai didi

Java UTF-8 无法正常处理 JSON

转载 作者:行者123 更新时间:2023-12-02 02:55:47 30 4
gpt4 key购买 nike

我正在使用 Spring Rest 模板来获取 Rest API。

当我尝试打印输出时,出现不需要的字符。

这是我的代码:

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> apiResponse = restTemplate.getForEntity(url,String.class);
return apiResponse.getBody();

输出是:

{"status":"FAILURE","error_code":"ITI","message":"Invalid Transaction Id","time":"30-03-2017 11:47:32"}

收到此错误后,我在其余客户端中添加了 UTF-8 字符编码:

public static String exicute(String url) {          
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("utf-8")));
ResponseEntity<String> apiResponse = restTemplate.getForEntity(url,String.class);
return apiResponse.getBody();
}

之后输出发生了变化,但现在在结果前面。

?{"status":"FAILURE","error_code":"ITI","message":"Invalid Transaction Id","time":"30-03-2017 11:49:34"}

如何解决这个问题?

最佳答案

消息前面的

 是因为输入流在流的开头有一个字节顺序标记 (BOM)。字节顺序标记是一个 Unicode 字符,通常位于字节序列的开头,表示后续字节以 UTF-8 编码。

字符本身通常也被编码为 UTF-8。然后它被编码为0xEF,0xBB,0xBF,通常是displayed as  .

its only use in UTF-8 is to signal at the start that the text stream is encoded in UTF-8

该字符实际上并不是内容本身的一部分;相反,它只是一段元数据。

如何解决?
在我看来,字节序列的创建者(通常是一个文件,但也可以是网络上的一些字节流)应该删除它。

但另一方面,您可以通过用空字符串替换该字符来轻松删除它。

string.replace("\uFEFF", "");

<子> code piece copied from this post

关于Java UTF-8 无法正常处理 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43109995/

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