Rune
是Dart 用来表示字符串中的 UTF-32 编码字符。
Unicode 系统中用的所有字母,数字和符号都对应唯一的数值编码。 因为Dart 字符串是一系列 UTF-16 编码单元, 所以要在字符串中表示32位 Unicode 值需要特殊语法支持。
Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数。 例如,心形符号 (♥) 是 \u2665。 对于特殊的非 4 个数值的情况, 把编码值放到大括号中即可。 例如,emoji 的笑脸 (�) 是 \u{1f600}。
String 类型有一些属性可以获得 rune 数据。 属性 codeUnitAt 和 codeUnit 返回16位编码数据。 属性 runes 获取字符串中的 Rune 。
下面演示了 Rune 、 16-bit code units、 和 32-bit code points 之间的关系。
main() {
var clapping = '\u{1f44f}';
print(clapping);
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = new Runes(
'\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
print(new String.fromCharCodes(input));
}