js> decodeURIComponent('+') + js> encodeURIComponent(' ') %20
'+'が' 'にデコードされないし,' 'は%20にエンコードされる.
直接使っていればわかるんだけども,ライブラリ(prototype.js)経由だとわかりにくい.
var ajax = new Ajax.Request(url, {method: 'get', parameters: 'foo+bar', onSuccess: success});
parametersにはエンコードされたクエリ文字列を入れるという仕様なのだが,そのままparameterをくっつけてGETしているのかと思ったらdecodeURIComponentしてencodeURIComponentしていたので'foo bar'ではなく'foo+bar'でGETしていた.