#character-set #iana #registry #charset #codes #standard

codes-iana-charset

本包包含了对 IANA 字符集注册表的实现

4 个版本

0.1.3 2022年12月25日
0.1.2 2022年12月23日
0.1.1 2022年12月13日
0.1.0 2022年12月12日

#1008 in 文本处理

每月 23 次下载

MIT 许可证

66KB
822 代码行

包 codes-iana-charset

本包包含了对IANA CHARSET注册表的实现。

crates.io docs.rs

这些是可能在互联网中使用并在互联网文档中引用的字符集的官方名称。这些名称以 ANSI_X3.4-1968 表示,通常称为 US-ASCII 或简单地称为 ASCII。在互联网中最常用的字符集,特别是在协议标准中使用的字符集是 US-ASCII,强烈推荐使用。也鼓励使用 US-ASCII 名称。

字符集名称可以是 US-ASCII 可打印字符集中的最多 40 个字符。然而,不区分大小写字母的使用。

MIBenum 值是用于 MIB 中标识编码字符集的唯一值。

MIBenum 值的值域已分为三个区域。第一个区域(3-999)由某些标准化组织标准化过的编码字符集组成。该区域旨在用于没有子集实现的规范。第二个区域(1000-1999)用于 Unicode 和 ISO/IEC 10646 编码字符集,以及可能出现的(一组)子目录的规范。第三个区域(>1999)旨在用于供应商特定的编码字符集。

关于 API 设计的说明,请参阅仓库 README

示例

use codes_iana_charset as charset;

let latin_1 = charset::CHARSET_4;
assert_eq!(latin_1.id(), 4);
assert_eq!(latin_1.name(), "ISO_8859-1:1987");
assert_eq!(
    latin_1.source(),
    "[ISO-IR: International Register of Escape Sequences] Note: The current registration authority is IPSJ/ITSCJ, Japan.",
);
assert_eq!(latin_1.preferred_alias(), Some("ISO-8859-1"));
assert_eq!(latin_1.aliases(), &[
    "iso-ir-100",
    "ISO_8859-1",
    "ISO-8859-1",
    "latin1",
    "l1",
    "IBM819",
    "CP819",
    "csISOLatin1"
]);
assert_eq!(latin_1.reference(), Some("[RFC1345][Keld_Simonsen]"));

注意,FromStr 的实现考虑了所有别名。

use codes_iana_charset as charset;
use std::str::FromStr;

let latin_1 = charset::CHARSET_4;

let iso_8859_1 = charset::CharacterSetCode::from_str("ISO_8859-1").unwrap();

assert_eq!(latin_1, iso_8859_1);

let some_charset = charset::CharacterSetCode::try_from(4).unwrap();

assert_eq!(some_charset, iso_8859_1);

功能

默认情况下,仅启用 serde 功能。

  • serde - 启用 CharacterSetCode 类型的序列化。

更改

版本 0.1.3

  • 适应 codes-common 中的新 build 模块

版本 0.1.2

  • 实现了 StandardizedFixedLengthCode 特性。

版本 0.1.1

  • 修复了示例中的错误

版本 0.1.0

  • 初始发布

待办事项

TBD

依赖关系

~0.4–2.7MB
~44K SLoC