如何将 GBK 编码的文件读入字符串?

将要
use std::env;
use std::fs::File;
use std::io::prelude::*;

fn main() {
    let args: Vec<String> = env::args().collect();
    let filename = &args[1];
    let mut f = File::open(filename).expect("file not found");
    let mut contents = String::new();
    f.read_to_string(&mut contents).expect("something went wrong reading the file");
    println!("file content:\n{}", contents);
}

当我尝试读取GBK编码的文件时,出现以下错误:

thread 'main' panicked at 'something went wrong reading the file: Error { repr: Custom(Custom { kind: InvalidData, error: StringError("stream did not contain valid UTF-8") }) }', /checkout/src/libcore/result.rs:860

它说流必须包含有效的 UTF-8。如何读取 GBK 文件?

将要

我想出了如何从 GBK 编码的文件中逐行读取。

extern crate encoding;

use std::env;
use std::fs::File;
use std::io::prelude::*;
use std::io::BufReader;

use encoding::all::GBK;
use encoding::{Encoding, EncoderTrap, DecoderTrap};

fn main() {
    let args: Vec<String> = env::args().collect();
    let filename = &args[1];

    let mut file = File::open(filename).expect("file not found");
    let reader = BufReader::new(&file);

    let mut lines = reader.split(b'\n').map(|l| l.unwrap());

    for line in lines {
        let decoded_string = GBK.decode(&line, DecoderTrap::Strict).unwrap();
        println!("{}", decoded_string);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将字符串转换为“ gbk”编码?

来自分类Dev

如何对这个看似GBK编码的字符串进行解码?

来自分类Dev

如何将UTF-8编码的字符串标记列表读入向量?

来自分类Dev

将文件读入字符串数组

来自分类Dev

将文件读入字符串haskell

来自分类Dev

将文件读入字符串数组

来自分类Dev

将文件读入字符串数组

来自分类Dev

C-如何将文本文件中的单词读入字符串数组

来自分类Dev

您如何将字符串文件读入链表?(C)

来自分类Dev

如何将字符串读入向量

来自分类Dev

将文本文件读入字符串

来自分类Dev

将文本文件读入字符串数组

来自分类Dev

如何将.wav文件转换为base64编码的字符串?

来自分类Dev

如何将repr转换为编码的字符串

来自分类Dev

如何将repr转换为编码的字符串

来自分类Dev

如何将字符串编码为Json字符串文本?

来自分类Dev

如何将字节编码的字符串转换为先前的字符串值?

来自分类Dev

C编程如何将字符串读入数组并将其正确打印回去?

来自分类Dev

如何将具有特定字符串的excel表读入R

来自分类Dev

将字符串变量读入变量

来自分类Dev

将JSON读入GO字符串

来自分类Dev

将字节读入Swift字符串

来自分类Dev

将字符串读入数组

来自分类Dev

如何将MP3文件转换为Base64编码的字符串?

来自分类Dev

如何将MP3文件转换为Base64编码的字符串?

来自分类Dev

如何将文件列表作为 utf8 编码字符串获取到 gnuplot 中?

来自分类Dev

将文件中每行的前3个字符读入字符串数组

来自分类Dev

从文件流中使用 fgets 将字符串读入字符数组。[C]

来自分类Dev

如何将文件权限打印为字符串?

Related 相关文章

热门标签

归档