日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RestTemplate--解决中文乱码

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RestTemplate--解决中文乱码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【原文鏈接】:https://blog.tecchen.xyz ,博文同步發布到博客園。
由于精力有限,對文章的更新可能不能及時同步,請點擊上面的原文鏈接訪問最新內容。
歡迎訪問我的個人網站:https://www.tecchen.xyz 。

在開發扇貝-每日一句時,使用RestTemplate請求扇貝接口,并保存返回的數據。原本正常的代碼,經過架構升級后,請求接口時,會返回亂碼數據。經過直接訪問接口等形式,最終確認是RestTemplate這個bean有問題。
對RestTemplate的聲明也比較簡單,通過對apache的httpclient進行封裝,返回bean實例。代碼如下:

@Bean RestTemplate restTemplate() {return new RestTemplate(httpRequestFactory()); }

通過斷點debug發現以String格式接收數據時,底層采用的是StringHttpMessageConverter來處理請求。查看RestTemplate的構造方法如下:

public RestTemplate() {this.messageConverters = new ArrayList();this.errorHandler = new DefaultResponseErrorHandler();this.uriTemplateHandler = new DefaultUriBuilderFactory();this.headersExtractor = new RestTemplate.HeadersExtractor();this.messageConverters.add(new ByteArrayHttpMessageConverter());this.messageConverters.add(new StringHttpMessageConverter());this.messageConverters.add(new ResourceHttpMessageConverter(false));this.messageConverters.add(new SourceHttpMessageConverter());this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());if (romePresent) {this.messageConverters.add(new AtomFeedHttpMessageConverter());this.messageConverters.add(new RssChannelHttpMessageConverter());}if (jackson2XmlPresent) {this.messageConverters.add(new MappingJackson2XmlHttpMessageConverter());} else if (jaxb2Present) {this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());}if (jackson2Present) {this.messageConverters.add(new MappingJackson2HttpMessageConverter());} else if (gsonPresent) {this.messageConverters.add(new GsonHttpMessageConverter());} else if (jsonbPresent) {this.messageConverters.add(new JsonbHttpMessageConverter());}if (jackson2SmilePresent) {this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());}if (jackson2CborPresent) {this.messageConverters.add(new MappingJackson2CborHttpMessageConverter());} }

其中的StringHttpMessageConverter構造方法使用了默認字符集:ISO-8859-1。

public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {public static final Charset DEFAULT_CHARSET;……public StringHttpMessageConverter() {this(DEFAULT_CHARSET);}……static {DEFAULT_CHARSET = StandardCharsets.ISO_8859_1;} }

private final List<HttpMessageConverter<?>> messageConverters
根據RestTemplate的構造方法的源碼得知所有的HttpMessageConverter都是放在final List<HttpMessageConverter<?>> messageConverters這個常量集合中。雖然集合不可修改,但是可以對其中的元素StringHttpMessageConverter進行修改。
解決方案思路都是將ISO-8859-1的StringHttpMessageConverter替換為UTF-8的StringHttpMessageConverter。

  • 示例代碼一
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
  • 示例代碼二
for (HttpMessageConverter<?> httpMessageConverter : restTemplate.getMessageConverters()) {if (httpMessageConverter instanceof StringHttpMessageConverter) {((StringHttpMessageConverter) httpMessageConverter).setDefaultCharset(Charset.forName("UTF-8"));} }
  • 示例代碼三
// stream .findFirst(); 也是可以的 Optional<HttpMessageConverter<?>> converter = restTemplate.getMessageConverters().stream().filter(c -> c instanceof StringHttpMessageConverter).findAny(); if(converter.isPresent()) {((StringHttpMessageConverter) converter.get()).setDefaultCharset(Charset.forName("UTF-8")); }

轉載于:https://www.cnblogs.com/Candies/p/10398584.html

總結

以上是生活随笔為你收集整理的RestTemplate--解决中文乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人性做爰片免费视频 | 麻豆视频播放 | 国产农村妇女精品一区二区 | 男同av在线观看一区二区三区 | 久久av在线播放 | 大香伊人| julia一区二区三区中文字幕 | 欧美成人免费网站 | 欧美在线免费视频 | 日本电影一区 | 美女啪啪网| 欧美疯狂做受xxxxx高潮 | 91自啪 | 激情视频网站在线观看 | 激情午夜视频 | 免费黄色入口 | 99亚洲精品 | 婷婷另类小说 | 精品人妻一区二区三区视频 | 精品小视频在线观看 | 欧美中文字幕一区二区 | 成年网站免费观看 | 女同激情久久av久久 | 奇米精品一区二区三区在线观看一 | 干美女少妇 | 欧美成人一区二区在线 | 欧美午夜精品 | 日韩不卡免费 | 免费观看日批视频 | 亚洲不卡在线视频 | 99爱免费视频 | 毛片网 | 免费网站成人 | 欧美日韩精品二区 | 亚洲永久精品ww.7491进入 | 国产免费99 | 日韩精品无码一区二区三区 | 日本伦理一区二区 | 大尺度做爰无遮挡露器官 | 国产精品视频网址 | 日本99热| brazzers欧美一区二区 | 欧美精品黄色 | 色七七亚洲| 亚洲www视频 | 国产主播喷水 | 亚洲成av人片久久 | 精品99久久久久成人网站免费 | 亚洲精品久久久久久久久久久久久 | 国产91在线精品 | 狠狠干影视 | 欧美一卡二卡三卡四卡 | 91国内精品久久久 | 韩国女同性做爰三级 | 国产女同视频 | 鲁鲁狠狠狠7777一区二区 | 精品一二三区 | 免费看女生隐私 | 亚洲色偷偷综合亚洲av伊人 | 日韩一级黄色大片 | 美女黄色影院 | 日韩精品在线免费观看视频 | 欧美黄色精品 | 日本xxxx免费 | 男女午夜网站 | 国产精品一区二区黑人巨大 | 一区在线看 | 91久久一区二区三区 | 久久精品一区二区三区四区 | xx性欧美肥妇精品久久久久久 | 午夜黄色剧场 | 国产一区二区自拍视频 | 国产成人精品亚洲精品色欲 | 在线观看亚洲av每日更新 | 性xxxxbbbb| 久久精品欧美一区二区三区麻豆 | 澳门久久 | 亚洲成人av在线播放 | 欧美日韩久久婷婷 | 日本狠狠操 | 精品99在线| 亚色在线观看 | 日本高清视频一区二区 | 最近的中文字幕在线看视频 | 阿v视频免费在线观看 | 欧美色图亚洲激情 | 国产三级福利 | 日本熟伦人妇xxxx | 欧美日韩亚洲精品一区二区 | 欧美午夜网站 | 国产黄站 | 久久久久久无码精品大片 | 欧美性生交xxxxx久久久 | 亚洲精品xxxxx | 超碰蜜臀| 9191国产精品 | 亚洲天堂一区二区在线观看 | 好吊妞无缓冲视频观看 | 五号特工组之偷天换月 |