#cesu8 #utf-8 #java #string #validation #encoding #convert

no-std cesu8-str

CESU-8 和 Java CESU-8 字符串验证和操作

3 个稳定版本

1.2.1 2024 年 6 月 5 日
1.2.0 2024 年 6 月 1 日
1.1.0 2024 年 5 月 26 日
1.0.2 2024 年 5 月 21 日
1.0.0 2024 年 5 月 9 日

#611文本处理

Download history 159/week @ 2024-05-08 148/week @ 2024-05-15 270/week @ 2024-05-22 235/week @ 2024-05-29 199/week @ 2024-06-05 6/week @ 2024-06-12

每月 397 次下载

MIT 许可证

150KB
2.5K SLoC

CESU-8 编码器 & 解码器

在正常 UTF-8 和 CESU-8 编码之间进行转换。

CESU-8 将基本多语言平面之外的字符编码为两个 UTF-16 代理字符,然后重新编码为 3 字节 UTF-8 字符。这意味着 4 字节 UTF-8 序列成为 6 字节 CESU-8 序列。

我们还支持 Java 的修改版 UTF-8 编码,它使用 CESU-8 编码的一种变体,使用两字节序列。


lib.rs:

实现 CESU-8 兼容编码方案 的库。这是一种非标准的 UTF-8 变体,一些系统内部用于将 UTF-16 数据表示为 8 位字符。

Unicode 联盟不建议使用此编码。它可以用于处理现有 API,但不应用于数据传输或存储。

Java 和 U+0000

Java 使用上述描述的 CESU-8 编码,但有一个区别:空字符 U+0000 被表示为过长的 UTF-8 序列 C0 80。这由 JavaStrJavaString 支持。

代理对和 UTF-8

UTF-16 编码使用 "代理对" 来表示从 U+10000 到 U+10FFFF 范围内的 Unicode 代码点。这些是范围在 0xD800 到 0xDFFF 之间的 16 位数字。

CESU-8 将这些代理对编码为一个由两套三个字节组成的 6 字节序列。

库功能

Alloc - 启用所有与分配相关的功能。这将允许使用 Cesu8StringJavaString,它们提供与标准库的 String 相似的 API。

无运行时依赖

功能