この質問は Python 開発者 (コマンドライン引数としての Unicode エスケープの入力を許可する) によって尋ねられたようですが、これは部分的に関連していると思いますが、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 を使用しています。