看起來這個問題已經被python開發者(Allowing input of Unicode escapes as command line arguments)詢問過了,我認爲這部分涉及到了這個問題,但是它並沒有完全給我一個解決我在Ruby中遇到的直接問題的解決方案。我很好奇,如果有一種方法可以將轉義的unicode序列作爲命令行參數,分配給一個變量,然後在腳本運行後將轉義的unicode作爲普通的unicode進行處理和顯示。基本上,我希望能夠選擇一個unicode號碼,然後讓Ruby將其粘貼到一個文件名中,並顯示實際的unicode字符。ruby unicode轉義爲命令行參數
這裏有幾件事情我已經注意到,導致問題:
unicode = ARGV[0] #command line argument is \u263a
puts unicode
puts unicode.inspect
=> u263a
=> "u263a"
有串所需要的正斜槓爲Unicode序列被剝離處理。 然後,如果我們嘗試添加另一個「\」逃吧,
unicode = ARGV[0] #command line argument is \\u263a
puts unicode
puts unicode.inspect
=> \u263a
=> "\\u263a"
,但它仍然不會被正確處理。
在此處,實際上,我試圖做到這一點一些相關的代碼:
unicode = ARGV[0]
filetype = ARGV[1]
path = unicode + "." + filetype
File.new(path, "w")
看起來這應該是相當簡單的,但我已經搜查,搜查,並不能找到一個解決方案。我應該補充一點,我知道在字符串中提供硬編碼的轉義Unicode工作得很好,就像File.new("\u263a.#{filetype}", "w")
一樣,但從參數/變量中獲取它就是我遇到的問題。我正在使用Ruby 1.9.2。
這是隻是[這個問題](http://stackoverflow.com/q/5560914/479863)與外殼吃反斜槓的額外複雜?無論如何,「ActiveSupport :: JSON.decode」可能是有用的。 – 2013-02-16 04:39:21
類似的,但是,主要的問題是shell正在吃我的反斜槓。 – cwade 2013-02-18 17:46:22
每個人都希望使用反斜槓作爲轉義字符,所以有時你必須使用雙倍,三倍,四倍...等等。有什麼理由不能通過參數傳遞一個UTF-8字符串嗎? – 2013-02-18 18:51:59