UTF-8使用变量在Ruby中编码

时间:2011-08-10 23:10:37

标签: ruby utf-8

我使用的是Ruby 1.8.7(升级不是一个选项)。我想创建一个从0到127的所有UTF-8代码点的字符串,写为“\ uXXXX”。

我的问题是这被解释为(例如):'u0008'。如果我尝试使用'\ u0008',字符串将变为“\ u0008”,这不是我想要的。

我尝试了很多不同的方法,但似乎不可能创建一个完全只是“\ uXXXX”的字符串。 “\ u000B”。它总是“\ u000B”或“u000B”

逃避'\'不是一种选择。我需要将一个字符串发送到服务器,例如服务器将接收'\ u000B'。这样其他服务器就可以测试其对\ uXXXX语法的解析。然而,在Ruby中似乎无法做到这一点。

如果有人能证明我错了,那就很开心:)

1 个答案:

答案 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