Dart基础语言 — Runes
Runes
Runes 对象是一个 32位 字符对象,用来表示一个字。
这样设计也是考虑兼容 UTF-16 四个字节的情况。
length 和 runes.length 比较
String a = '';
print(a.length);
print(a.runes.length);
>> 输出
2 // 标识占 2 个 16 位字符
1 // 表示占 1 个 32 位字符
runes 是一个 32 位字符对象
操作 32-bit Unicode 字符
Runes b = new Runes('\u{1f596} \u6211');
var c = String.fromCharCodes(b);
或者
String c = '\u{1f596} \u6211'
如果非4个数值,需要用 {…}
返回 16-bit code units 的 codeUnitAt codeUnits
var a = '';
print(a.codeUnitAt(0));
print(a.codeUnits);
>> 输出
55357 // 第 1 位的 10 进制数值
[55357, 56442] // 显示 2 位的 10 进制数值
返回 32-bit Unicode 的 runes
var a = '';
print(a.runes);
>> 输出
(128122) // 显示 32 位的 10 进制数值
String 操作整理
| 名称 | 说明 |
| —— | —— |
| codeUnitAt | 某个字符的码 10进制 |
| fromCharCodes | Runes 转 String 工厂函数 |
| runes | 返回字对象 |
基础知识字符集
- ASCII
- 非 ASCII 中的 GB2312、GBK
- Unicode、UTF-8、UTF-16、UTF-32