use encoding_rs_io::DecodeReaderBytesBuilder;
use encoding_rs::GBK;
let file = File::open("/path/to/file").unwrap();
let mut decoder=DecodeReaderBytesBuilder::new().encoding(Some(GBK)).build(file);
let mut decode=String::new();
decoder.read_to_string(&mut decode).unwrap()
use encoding_rs_io::DecodeReaderBytesBuilder;
use encoding_rs::GBK;
let file = File::open("/path/to/file").unwrap();
let mut decoder=DecodeReaderBytesBuilder::new().encoding(Some(GBK)).build(file);
let mut decode=String::new();
decoder.read_to_string(&mut decode).unwrap()
use encoding_rs::GBK;
let mut file=File::open("path/to/file").unwrap();
let mut buf=Vec::new();
file.read_to_end(&mut buf).unwrap();
let (decode_str,_,_)=GBK.decode(&buf);
let decode_str:String=decode_str.into()
评论区
写评论后来试了下,流读取解码非常可行,之前在其他的编程语言里记得用过类似的写法,感觉用起来很方便。感谢!
--
👇
Bai-Jinlin: 也可以搭配一下,要是流读取解码的话用这个库能少写点代码。
可行!感谢大佬。另外anyhow这个库之前没发现,刚刚试了下,觉得超好用,发现宝了。
--
👇
c5soft: 有现成的库可用,经过生产坏境的检验没有任何问题
gbk2utf8.rs
Cargo.toml
有现成的库可用,经过生产坏境的检验没有任何问题
gbk2utf8.rs
Cargo.toml
ANSI确实不是UTF-8,搞不了。会报错的。
--
👇
caohaiwd: 标准库就有,用 String::from_utf8 或者 String::from_utf8_lossy
感谢,长见识了!大佬你这真的太内行了。
--
👇
LuoZijun: 这个你自己写一个就行了,其实也没有几行代码。
我随手写了一个:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=abb618a824d827e80e2478c7b1190bde
非常感谢!因为我薄弱的基础,我之前甚至没有意识到ANSI不是类似UTF-8一样普适的数据集。。。。难怪一直找不到可用的库。感谢,前者可行,后者流读取解码,我再尝试下。
--
👇
Bai-Jinlin: 也可以搭配一下,要是流读取解码的话用这个库能少写点代码。
也可以搭配一下,要是流读取解码的话用这个库能少写点代码。
encoding_rs就行,给你个简单的例子。
这个你自己写一个就行了,其实也没有几行代码。
我随手写了一个:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=abb618a824d827e80e2478c7b1190bde
ANSI 字符集 和 UTF-8 字符集是不一样的,你不能把 ANSI 数据直接当成 UTF8 数据去处理。
--
👇
caohaiwd: 标准库就有,用 String::from_utf8 或者 String::from_utf8_lossy
标准库就有,用 String::from_utf8 或者 String::from_utf8_lossy