In article <4A9E44DD.6050706 / airemix.jp>,
  "NARUSE, Yui" <naruse / airemix.jp> writes:

> 長期的には encodeURI あたりと置き換えたいところですが、

これが指しているのは、JavaScript の encodeURI だと思うんです
が、それってそんなにお薦めなんですか?

ECMAScript Language Specification
http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

を見る限りは URI.escape と同様に、URI 全体を受け付けることを
意図しているように思えます。そうすると、区切りを意図した文字
とデータを意図した文字があいまいになって、意図にあったエスケー
プができません。

たとえば、Google (電卓) で 2+3 という式を計算させるような
URI を、以下のように生成してもうまくいきません。

expr = "2+3"
puts URI.escape("http://www.google.com/search?q=#{expr}") 
#=> http://www.google.com/search?q=2+3

うまくいかないのは、+ が + のままだからです。うまくいかせる
には、+ を %2B にしないといけないのですが、expr 内の + を
%2B にしても、やっぱりうまくいきません。

expr = "2%2B3"
puts URI.escape("http://www.google.com/search?q=#{expr}")
#=> http://www.google.com/search?q=2%252B3

たぶん、JavaScript の encodeURI も同じ問題があるでしょう。

このようにうまくいかないのは個々の要素を連結してからエスケー
プするという考え方が間違っているからで、正しくは個々の要素を
エスケープしてから連結する必要があります。

なので、URI (っぽく個々の要素を連結したもの) をエスケープす
るという関数は考え方自体が間違っていて、とてもお薦めできるも
のではないと思うんですが。

つまり、とてもじゃないですが使いやすいところにあるべき機能と
は思えないので、encodeURI を URI.escape や URI.encode など使
いやすい名前に割り当てることには反対します。
-- 
[田中 哲][たなか あきら][Tanaka Akira]