小编Lin*_*orm的帖子

如何读取非UTF8编码的csv文件?

使用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)

csv character-encoding windows-1252 rust

1
推荐指数
1
解决办法
677
查看次数

标签 统计

character-encoding ×1

csv ×1

rust ×1

windows-1252 ×1