3 个稳定版本
1.0.2 | 2022年1月29日 |
---|---|
1.0.1 | 2021年3月15日 |
#145 in 国际化 (i18n)
用于 ebustl
16KB
186 行
codepage-strings:为 Windows 字符集编码字符串进行编码/解码
Bart Massey 2021 (版本 1.0.2)
此 Rust 包建立在 encoding_rs
、codepage
和 oem-cp
等出色的包的基础上,旨在提供符合 Rust 风格的 Windows 字符集编码和解码。
由于 Windows 字符集是历史遗留问题,使用它们进行字符串转换比较困难。遗憾的是,仍然有很多文件使用这些编码。此包专门为与 RIFF 文件格式一起使用而创建,该格式包含用于文本国际化的字符集。
除了 codepage
和 oem-cp
支持的字符集外,没有对 Windows 字符集进行额外处理。如果缺少所需的单字节字符集,建议将其添加到 oem-cp
,这似乎是主要的 Rust 非常规 Windows 字符集表仓库。我相信这里处理了大多数 iconv
支持的单字节字符集,但我还没有仔细检查。
除了 UTF-16LE 和 UTF-16BE 之外,目前不支持多字节 Windows 字符集——特别是各种亚洲语言。字符集 65001 (UTF-8) 支持作为身份转换。UTF-32LE 和 UTF32-Be 不支持。EBCDIC 字符集和 UTF-7 不支持,且优先级较低,因为真的需要吗?
没有特别关注性能。该接口在一定程度上允许 std::borrow::Cow
,但这受到 encoding_rs
和 oem-cp
之间的小阻抗不匹配的限制。
示例
在Windows代码页869(另一种希腊语)上执行一些字符串转换。
let coding = Coding::new(869)?;
assert_eq!(
coding.encode("αβ")?,
vec![214, 215],
);
assert_eq!(
coding.decode(&[214, 215])?,
"αβ",
);
assert_eq!(
coding.decode_lossy(&[214, 147]),
"α\u{fffd}",
);
assert_eq!(
coding.decode(&[214, 147]),
Err(ConvertError::StringDecoding),
);
本软件包在 "MIT 许可证" 下提供。请参阅本分发中的 LICENSE
文件以了解许可证条款。
感谢 cargo-readme
软件包生成此 README
。
依赖关系
~4.5MB
~133K SLoC