ユースケースの例では、 の内容をファイル名としてコンピューターに保存http://example.comしますが、安全でない文字 (つまり:と/) はエスケープされています。
古典的な方法は、正規表現を使用して、英数字、ダッシュ、アンダースコア以外のすべての文字を取り除くことですが、そうすると、ファイル名を URL に逆にすることができなくなります。CGI.escapeWindows と *nix の両方のファイル名をサニタイズする方法 (おそらく と別のフィルターの組み合わせ) はありますか? トレードオフがはるかに長いファイル名であっても?
編集:
例CGI.escape
CGI.escape 'http://www.example.com/Hey/whatsup/1 2 3.html#hash'
#=> "http%3A%2F%2Fwww.example.com%2FHey%2Fwhatsup%2F1+2+3.html%23hash"
いくつかのこと...%記号はファイル文字として完全に安全ですか? 残念ながら、CGI.escapeは不正な形式の URL のスペースを最初のパスで に変換しません%20。そのため、どの翻訳方法でも、すべてのスペースを に変更してから適用する必要があると+思いgsubます。CGI.escape