2010-12-15 39 views
6

我無法迭代整個Unicode字符範圍。Ruby:通過所有Unicode字符進行模糊處理(UTF8 /編碼/字符串處理)

我到處找......

我建立一個模糊器,並希望嵌入到一個URL,所有Unicode字符(一次一個)。

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

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

如果我能做些如下的事情:"\u" + "ff1c"這將是偉大的。

這是我得到的最接近:

char = "\u0000" 
... 

#within iteration 

char.succ! 

... 

但性格"\u0039",這是9號之後,我將獲得「10」,而不是「:」

+0

這難道不是打敗了嘗試只生成有效的Unicode代碼點模糊的整個觀點嗎? – 2011-05-18 11:04:50

回答

2

你可以使用包來將數字轉換爲UTF8字符,但我不確定這是否能解決您的問題。

您可以創建一個包含所有字符的數字值的數組,並使用pack來獲得UTF8字符串,或者您可以從0循環到任何需要的值並在循環中使用pack。

我寫了一個小例子來解釋我自己。下面的代碼打印出每個字符的十六進制值,後面跟着字符本身。

0.upto(100) do |i| 
    puts "%04x" % i + ": " + [i].pack("U*") 
end 
1

下面是一些簡單的代碼,雖然略顯模糊,這需要的事實,將Ruby轉換的< <操作者的右手側的整數代碼點優勢。這隻適用於Ruby 1.8以上的整數值< = 255.它將適用於1.9中大於255的值。

0.upto(100) do |i| 
    puts "" << i 
end