我使用的是Ruby 1.8.7(升级不是一个选项)。我想创建一个从0到127的所有UTF-8代码点的字符串,写为“\ uXXXX”。
我的问题是这被解释为(例如):'u0008'。如果我尝试使用'\ u0008',字符串将变为“\ u0008”,这不是我想要的。
我尝试了很多不同的方法,但似乎不可能创建一个完全只是“\ uXXXX”的字符串。 “\ u000B”。它总是“\ u000B”或“u000B”
逃避'\'不是一种选择。我需要将一个字符串发送到服务器,例如服务器将接收'\ u000B'。这样其他服务器就可以测试其对\ uXXXX语法的解析。然而,在Ruby中似乎无法做到这一点。
如果有人能证明我错了,那就很开心:)
答案 0 :(得分:2)
使用Integer #
chr
获取角色。这是一个干净的版本:
(1..127).each do |i|
value << "U+#{i} = #{i.chr}, hex = \\x#{"%02x" % i}; "
end
"%02x" % i
等于sprintf("%02x", i)
。它将整数作为2位十六进制数返回。
Escaped output(参见评论):
(1..127).each do |i|
value << "U+#{i} = \\u#{"%04x" % i}, hex = \\x#{"%02x" % i}; "
end