6

我无法遍历整个 unicode 字符范围。

我到处找...

我正在构建一个模糊器,并希望将所有 unicode 字符(一次一个)嵌入到一个 url 中。

例如: http://www.example.com?a=\uff1c

我知道有一些内置工具,但我需要更多的灵活性。

如果我能做类似以下的事情:"\u" + "ff1c"那就太好了。

这是我得到的最接近的:

char = "\u0000"
...

#within iteration

char.succ!

...

但是在"\u0039"数字 9 之后,我会得到“10”而不是“:”

4

2 回答 2

2

您可以使用 pack 将数字转换为 UTF8 字符,但我不确定这是否能解决您的问题。

您可以创建一个包含所有字符的数值的数组并使用 pack 来获取 UTF8 字符串,或者您可以从 0 循环到您需要的任何内容并在循环中使用 pack。

我写了一个小例子来解释自己。下面的代码打印出每个字符的十六进制值,然后是字符本身。

0.upto(100) do |i|
    puts "%04x" % i + ": " + [i].pack("U*")
end
于 2011-01-12T08:57:30.070 回答
1

这里有一些更简单的代码,虽然稍微有点混淆,它利用了 Ruby 将 << 运算符右侧的整数转换为代码点的事实。这仅适用于 Ruby 1.8 以上的整数值 <= 255。它适用于 1.9 中大于 255 的值。

0.upto(100) do |i|
  puts "" << i
end
于 2013-02-12T13:04:03.060 回答