home wiki.fukuchiharuki.me
Menu

なんか間違えてたっぽいです。

キーワード

  • 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()にしておく。
大した数ではないのであるいは不足分を自前でデコードする。

参考