10个版本 (4个稳定版)
1.1.0 | 2023年7月26日 |
---|---|
1.0.2 | 2023年4月22日 |
1.0.1 | 2022年11月2日 |
0.3.3 | 2022年1月18日 |
0.1.0 | 2021年7月2日 |
#393 in 编码
2,044 每月下载量
用于 5 crate
1MB
32K SLoC
Yore
基于OEM代码页进行解码和编码字符集的Rust库。
功能
用法
将yore
添加到您的Cargo.toml
文件。
[dependencies]
yore = "1.1.0"
示例
使用特定代码页
use yore::code_pages::{CP857, CP850};
use yore::{DecodeError, EncodeError};
// Vec contains ASCII "text"
let bytes = vec![116, 101, 120, 116];
// Vec contains ASCII "text " and codepoint 231
let bytes_undefined = vec![116, 101, 120, 116, 32, 231];
// Notice that decoding CP850 can't fail because it is completely defined
assert_eq!(CP850.decode(&bytes), "text");
// However, CP857 can fail
assert_eq!(CP857.decode(&bytes).unwrap(), "text");
// "text " + codepoint 231
assert!(matches!(CP857.decode(&bytes_undefined), DecodeError));
// Lossy decoding won't fail due to fallback
assert_eq!(CP857.decode_lossy(&bytes_undefined), "text �");
// Encoding
assert_eq!(CP850.encode("text").unwrap(), bytes);
assert!(matches!(CP850.encode("text 🦀"), EncodeError));
assert_eq!(CP850.encode_lossy("text 🦀", 231), bytes_undefined);
使用特质对象
use yore::CodePage;
fn do_something(code_page: &dyn CodePage, bytes: &[u8]) {
println!("{}", code_page.decode(bytes).unwrap());
}
支持的代码页
标识符 | 名称 | 描述 |
---|---|---|
437 | ibm437 | OEM美国 |
737 | ibm737 | OEM希腊(以前为437G);希腊(DOS) |
775 | ibm775 | OEM波罗的海;波罗的海(DOS) |
850 | ibm850 | OEM多语言拉丁1;西欧(DOS) |
852 | ibm852 | OEM拉丁2;中欧(DOS) |
855 | ibm855 | OEM西里尔文(主要是俄语) |
857 | ibm857 | OEM土耳其;土耳其(DOS) |
860 | ibm860 | OEM葡萄牙;葡萄牙(DOS) |
861 | ibm861 | OEM冰岛;冰岛(DOS) |
862 | dos-862 | OEM希伯来;希伯来(DOS) |
863 | ibm863 | OEM法语加拿大;法语加拿大(DOS) |
864 | ibm864 | OEM阿拉伯;阿拉伯(864) |
865 | ibm865 | OEM北欧;北欧(DOS) |
866 | cp866 | OEM俄语;西里尔文(DOS) |
869 | ibm869 | OEM现代希腊;希腊,现代(DOS) |
874 | windows-874 | 泰语(Windows) |
910 | ibm910 | IBM-PC APL2 |
1250 | windows-1250 | ANSI中欧;中欧(Windows) |
1251 | windows-1251 | ANSI西里尔文;西里尔文(Windows) |
1252 | windows-1252 | ANSI拉丁1;西欧(Windows) |
1253 | windows-1253 | ANSI希腊;希腊(Windows) |
1254 | windows-1254 | ANSI土耳其;土耳其(Windows) |
1255 | windows-1255 | ANSI希伯来;希伯来(Windows) |
1256 | windows-1256 | ANSI阿拉伯;阿拉伯(Windows) |
1257 | windows-1257 | ANSI波罗的海;波罗的海(Windows) |
1258 | windows-1258 | ANSI/OEM越南;越南(Windows) |
* 基准测试
encoding_rs
只支持 oem_cp
和 yore
所支持的一些编码。此外,encoding_rs
主要关注流式使用场景。
有关更多详细信息,请参阅 bench crate。
依赖关系
~290–750KB
~18K SLoC