なんか間違えてたっぽいです。
キーワード†
- 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()にしておく。
大した数ではないのであるいは不足分を自前でデコードする。