#cjk #unicode #reader #text-encoding

transcoding_rs

以简单高效的方式转换文本编码

2个版本

0.1.1 2021年10月24日
0.1.0 2021年10月24日

国际化(i18n)中排名301

每月下载23
用于aconv

MIT/Apache

58KB
827

transcoding_rs

这是一个转换库。在这里,转换意味着将文本编码转换为另一种编码。

有两个优秀的crate chardetngencoding_rschardetng 是为了编码检测而创建的,而 encoding_rs 可以用于转换。这个库的目标是通过结合这两个crate来实现简单高效的转换。

注意:支持的编码是在 编码标准 中定义的。

注意:UTF-16文件需要BOM才能被检测为编码。
这是因为这个库所依赖的 chardetng 不支持UTF-16,而这个库只为检测UTF-16添加了BOM嗅探。

用法

请参阅文档

编码检测是如何工作的。

由于文本在内部只是字节序列,无法以100%的准确率检测正确的编码。
因此,我们需要以某种方式猜测正确的编码。
以下是我们大致遵循的流程。

  1. 进行BOM嗅探以检测UTF-16。
    如果发现BOM,则跳过编码猜测。
  2. 使用 chardetng 猜测编码。
  3. 使用 encoding_rs 解码文本。
  4. 检查解码后的文本是否存在非文本字符,以下将描述。
    如果非文本字符不超过阈值,则输出解码后的文本。
    否则,发出错误消息并按原样输出输入文本。

非文本字符

在此库中被视为非文本的字符与 file 命令中相同,加上替换字符。
即 U+0000 ~ U+0006, U+000e ~ U+001a, U+001c ~ U+001f, U+007f, 和 U+FFFD 被视为非文本字符。

许可证

在以下许可证下授权:

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

约4MB
约128K SLoC