gpt4 book ai didi

csv - 如何在 Rust 中读取包含汉字的 CSV?

转载 作者:行者123 更新时间:2023-11-29 08:21:44 29 4
gpt4 key购买 nike

当我使用 the csv crate 读取包含中文字符的 CSV 文件时, 它有一个错误。

fn main() {
let mut rdr =
csv::Reader::from_file("C:\\Users\\Desktop\\test.csv").unwrap().has_headers(false);
for record in rdr.decode() {
let (a, b): (String, String) = record.unwrap();
println!("a:{},b:{}", a, b);
}
thread::sleep_ms(500000);
}

错误:

Running `target\release\rust_Work.exe`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Decode("Could not convert bytes \'FromUtf8Error { bytes: [208, 213, 195, 251], error: Utf8Error { va
lid_up_to: 0 } }\' to UTF-8.")', ../src/libcore\result.rs:788
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: Process didn't exit successfully: `target\release\rust_Work.exe` (exit code: 101)

测试.csv:

 1. 姓名   性别    年纪    分数     等级 
2. 小二 男 12 88 良好
3. 小三 男 13 89 良好
4. 小四 男 14 91 优秀

enter image description here

最佳答案

我不确定如何使错误消息更清楚:

Decode("Could not convert bytes 'FromUtf8Error { bytes: [208, 213, 195, 251], error: Utf8Error { valid_up_to: 0 } }' to UTF-8.")

FromUtf8Error记录在标准库中,错误文本显示“无法将字节转换为 UTF-8”(尽管中间有一些额外的细节)。

简单地说,您的数据不是 UTF-8,而且必须是。这就是 Rust 标准库(以及大多数库)真正处理的所有内容。您将需要弄清楚它的编码方式,然后找到某种将其转换为 UTF-8 的方法。可能有一个 crate以帮助处理其中任何一种情况。

也许更好的是,您可以从一开始就将文件保存为 UTF-8。可悲的是,人们在使用 Excel 时遇到这个问题相对常见,因为 Excel does not have a way to easily export UTF-8 CSV files .它总是以系统区域设置编码写入 CSV 文件。

关于csv - 如何在 Rust 中读取包含汉字的 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42327875/

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