ruby unicode作为命令行参数转义

时间:2013-02-16 03:24:37

标签: ruby unicode-escapes

看起来这个问题已被python dev(Allowing input of Unicode escapes as command line arguments)提出,我认为这部分涉及到它,但它并没有完全解决我在Ruby中的直接问题。我很好奇是否有办法将转义的unicode序列作为命令行参数,分配给变量,然后在脚本运行后处理转义的unicode并显示为正常的unicode。基本上,我希望能够选择一个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。

1 个答案:

答案 0 :(得分:1)

要取消unicode转义命令行参数并使用文件名中用户提供的unicode字符串创建新文件,我使用@mu is too short method使用pack和{{ 1}},像这样:

unpack