rust reqwest get请求中文乱码如何解决?-灵析社区

PunkMaccccc

use reqwest; // 定义一个自定义错误类型,可以保存 InvalidHeaderValue 或 reqwest::Error。 #[derive(Debug)] enum MyError { InvalidHeader(reqwest::header::InvalidHeaderValue), Reqwest(reqwest::Error), } impl From for MyError { fn from(error: reqwest::Error) -> Self { MyError::Reqwest(error) } } #[tokio::main] async fn main() -> Result { // 创建一个 reqwest 客户端。 let client = reqwest::Client::new(); // 定义 User-Agent 值;用你实际的 User-Agent 替换它。 let user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.31"; let accept = "Accept: */*"; let accept_encoding = "Accept-Encoding: gzip, deflate, br"; let connection = "Connection: keep-alive"; let content_type = "Content-Type: application/json; charset=UTF-8"; // 创建一个请求构建器,设置 URL 和头部。 let response = client .get("https://api.bilibili.com/x/space/wbi/arc/search?mid=259333&ps=1&pn=1") .header(reqwest::header::USER_AGENT, user_agent) .header(reqwest::header::ACCEPT, accept) .header(reqwest::header::ACCEPT_ENCODING, accept_encoding) .header(reqwest::header::CONNECTION, connection) .header(reqwest::header::CONTENT_TYPE, content_type) .send() .await?; let body = response.text().await?; println!("{:?}", body); Ok(()) } ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/21ac3146dcbd885e9c87eaa039e37e51.png) 思路一:更改编码 本人尝试无效 思路二:编译器编码问题 不知从何入手未尝试 思路三:需要处理gzip 本人尝试无效 希望大佬们可以赐教

阅读量:270

点赞量:14

问AI
这是因为服务端的响应是经过gzip压缩的,你需要在"cargo.toml"里配置"reqwest",增加以下内容 reqwest = { version = "0.11.20", features = ["gzip"] } 又或者将你将代码中设置"accept_encoding"的相关部分删掉,这样服务端就不会压缩响应内容 "图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241225/5fbb0443d0d0a0be2d3fc78abea18a27.png)