使用csv crate和最新的Rust版本1.31.0,我想读取ANSI(Windows 1252)编码的CSV文件,就像在UTF-8中一样.
在我阅读完整个文件后,我尝试过的事情(没有运气)Vec<u8>:
实际上,在我的公司,我们有很多CSV文件,ANSI编码.
另外,如果可能的话,我希望不要将整个文件加载到Vec<u8>一行但是一行读取(CRLF结束),因为许多文件很大(50 Mb或更多......).
在文件Cargo.toml中,我有这种依赖:
[dependencies]
csv = "1"
Run Code Online (Sandbox Code Playgroud)
test.csv包含以下保存为Windows-1252编码的内容:
Café;au;lait
Café;au;lait
Run Code Online (Sandbox Code Playgroud)
main.rs文件中的代码:
extern crate csv;
use std::error::Error;
use std::fs::File;
use std::io::BufReader;
use std::path::Path;
use std::process;
fn example() -> Result<(), Box<Error>> {
let file_name = r"test.csv";
let file_handle = File::open(Path::new(file_name))?;
let reader = BufReader::new(file_handle);
let mut rdr = csv::ReaderBuilder::new()
.delimiter(b';')
.from_reader(reader);
// println!("ANSI");
// for result in rdr.byte_records() {
// let record = result?; …Run Code Online (Sandbox Code Playgroud)