それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ruby の URI で日本語を含むURIに対応する。

日本語URIを扱うという戦い

rubyURIで日本語を含む文字列が扱えなくなったので、何とかしないといけないとアレコレ模索した。

>> URI.parse  'http://example.com/あああ'
URI::InvalidURIError: URI must be ascii only "http://example.com/\u{3042}\u{3042}\u{3042}"
from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/2.2.0/uri/rfc3986_parser.rb:20:in `split'

URI.encode が使えることを知った。

>> URI.encode 'http://example.com/あああ'
=> "http://example.com/%E3%81%82%E3%81%82%E3%81%

parse encode と合わせて使うことでほとんどの問題は解決する。

>> URI.parse URI.encode 'http://example.com/あああ'
=> #<URI::HTTP http://example.com/%E3%81%82%E3%81%82%E3%81%82>

これで、エラーなく扱うことができる。

が、、、、encode を毎回指定するのはめんどくさくないかな。

参考資料

http://d.hatena.ne.jp/haroperi/20110405/1301959688