ユースケースの例では、 の内容をファイル名としてコンピューターに保存http://example.com
しますが、安全でない文字 (つまり:
と/
) はエスケープされています。
古典的な方法は、正規表現を使用して、英数字、ダッシュ、アンダースコア以外のすべての文字を取り除くことですが、そうすると、ファイル名を URL に逆にすることができなくなります。CGI.escape
Windows と *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