Rubyを使用して、ダウンロードしてダウンロードするファイルのURLを抽出しています。ファイル名にutf8文字(例:ASCII文字のURLエンコードはどうすればできますか?
)www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
上記のURLをダウンロードしようとすると失敗します。
www.domain.com/.../%C3%96%C3%87%C3%84%C3%9C360%C3%93%C3%AF%C3%92%C3%B4%C3%96%C3%BA%C3%80%C3%AD.txt
しかし、私は
URL Encoding Referenceに従うならば、それは動作します:
URI::escape
を使用すると、動作しないというURIを生成
私はまったく同じことをRubyで機能を検索してみましたエンコーディングが見つかりませんでした。上記のリンクにテーブルを実装する関数を書く前に、誰かがこれを行う既存のライブラリを知っているかどうか尋ねたいと思います。そして、私がこれをすることに決めたら、エンコードすべき文字の範囲は明らかです。すべてではありません。
私はRUBY_VERSION => "1.8.7"
バイトC3 96は、UTF-8でエンコードされたÖです。同じ文字がASCIIで1バイトD6として表されます。だから、この問題にアプローチする一つの方法は、あなたのUTF-8文字をASCIIに変換してから、次にURI :: escapeに変換することです。しかし、それはASCII同等物を持っていないUnicode文字のためにあなたを助けません。 –
['CGI.escape'](http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape)を試しましたか? –
@DavidGorsline:これは動作しません。私は '?'で終わる'360'と '.txt'を除くすべての文字に適用されます。上記の例は実際の例です。文字列'ÖÇÄÜ360ÓïÒôÖúÀí.txt 'でテストできるアイデアがあれば、それをどうすればいいか教えてください。ご協力いただきありがとうございます。 – Rami