2个版本
0.1.1 | 2021年10月24日 |
---|---|
0.1.0 | 2021年10月24日 |
在国际化(i18n)中排名301
每月下载23次
用于aconv
58KB
827 行
transcoding_rs
这是一个转换库。在这里,转换意味着将文本编码转换为另一种编码。
有两个优秀的crate chardetng
和 encoding_rs
。 chardetng
是为了编码检测而创建的,而 encoding_rs
可以用于转换。这个库的目标是通过结合这两个crate来实现简单高效的转换。
注意:支持的编码是在 编码标准 中定义的。
注意:UTF-16文件需要BOM才能被检测为编码。
这是因为这个库所依赖的 chardetng
不支持UTF-16,而这个库只为检测UTF-16添加了BOM嗅探。
用法
请参阅文档。
编码检测是如何工作的。
由于文本在内部只是字节序列,无法以100%的准确率检测正确的编码。
因此,我们需要以某种方式猜测正确的编码。
以下是我们大致遵循的流程。
- 进行BOM嗅探以检测UTF-16。
如果发现BOM,则跳过编码猜测。 - 使用
chardetng
猜测编码。 - 使用
encoding_rs
解码文本。 - 检查解码后的文本是否存在非文本字符,以下将描述。
如果非文本字符不超过阈值,则输出解码后的文本。
否则,发出错误消息并按原样输出输入文本。
非文本字符
在此库中被视为非文本的字符与 file
命令中相同,加上替换字符。
即 U+0000 ~ U+0006, U+000e ~ U+001a, U+001c ~ U+001f, U+007f, 和 U+FFFD 被视为非文本字符。
许可证
在以下许可证下授权:
- Apache许可证,版本2.0(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖关系
约4MB
约128K SLoC