看起来这个问题是由 python 开发人员提出的(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。