3

我知道我可以使用\uNNNN转义序列在 Ruby 中转义一个基本的 Unicode 字符。例如,对于笑脸U+263A (☺),我可以使用字符串 literal "\u2603"

如何转义大于基本多语言平面之外的 U+FFFF 的 Unicode 字符,例如眨眼:U+1F609 (

4

1 回答 1

1

您可以使用转义序列\u{XXXXXX},其中XXXXXX介于 1 到 6 个十六进制数字之间:

s = "\u{1F609}" # => ""

大括号还可以包含由单个空格或制表符分隔的多个运行,以编码多个字符:

s = "\u{41f 440 438 432 435 442 2c 20 43c 438 440}!" # => "Привет, мир!"

您还可以使用字节转义来编写包含字符的 UTF-8 编码的文字,尽管这不是很方便,并且如果文件编码不同,也不一定会产生 UTF-8 编码的字符串:

# encoding: utf-8
s = "\xF0\x9F\x98\x89" # => ""
s.length # => 1

# encoding: iso-8859-1
s = "\xF0\x9F\x98\x89" # => "\xF0\x9F\x98\x89"
s.length # => 4
于 2015-09-03T21:08:42.230 回答