尝试动态创建 unicode 字符串的 Ruby 抛出 "invalid Unicode escape"错误

标签 ruby string dynamic unicode

我有一个要求,我想使用插值动态创建一个 unicode 字符串。例如请看下面在 irb 中试过的代码

2.1.2 :016 > hex = 0x0905
 => 2309 
2.1.2 :017 > b = "\u#{hex}"
SyntaxError: (irb):17: invalid Unicode escape
b = "\u#{hex}"

十六进制代码 0x0905 对应梵文字母 A 的独立元音 unicode。

我不知道如何达到预期的结果。

最佳答案

您可以将编码传递给 Integer#chr :

hex = 0x0905
hex.chr('UTF-8') #=> "अ"

参数可以省略,如Encoding::default_internal设置为 UTF-8:

$ ruby -E UTF-8:UTF-8 -e "p 0x0905.chr"
"अ"

您还可以将代码点附加到其他字符串:

'' << hex #=> "अ"

关于尝试动态创建 unicode 字符串的 Ruby 抛出 "invalid Unicode escape"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124145/

相关文章:

ruby-on-rails - 为什么我的 person_ids 哈希中有一个空数组元素?

Ruby - 无效的 URI 消息

javascript - 如何获取目录中的 URL 字符串?

javascript - JS函数去除textarea中的尾随字母

python - 循环的可变长度 - tensorflow

java - 不使用数据库的 Java 动态 XML 分解

Ruby 生成自签名证书

mysql - 在 Mac os x Lion 上安装 mysql2 gem

string - 如何在 lua 字符串文字中嵌入十六进制值(即\x 等价物)

c++ - 在 C++ 中,类函数放在内存的哪个位置?