障害メモ/JavaScriptでエンコードしたものがJavaでデコードできない

&color(red){なんか間違えてたっぽいです。};

キーワード

  • JavaScript/encodeURI()
  • Java/URLDecoder.decode()

現象

%%次のコードでデコードしきれない文字がある。%%

次のコードでエンコードとデコードの対応がうまくいっていない。

  • JavaScriptでエンコード
keyword = encodeURIComponent(keyword);
// これをlocation.hrefで使う
  • Javaでデコード
keyword = URLDecoder.decode(keyword)

原因

%%URLDecoder.decode()はencodeURIComponent()でエンコードするすべてをデコードしない。%% %%URLDecoder.decode()がデコードしない分はおそらく「#$&+,/:;=?@」で、%% %%encodeURI()と対応づくのかもしれない?(検証してない)%%

location.hrefがエンコードをどうしてるかに依っていた気がする。

対策

%%URLDecoder.decode()する想定ならencodeURI()にしておく。%%
%%大した数ではないのであるいは不足分を自前でデコードする。%%

参考

  • http://javascript.dohow.jp/basic/encode.shtml
作成日 2013-08-17