たいした話ではないです。あくまでも、忘れないように、自分へのメモ。
サーブレットの場合、URLエンコード、デコードはrequest.getParameter()でやるので問題ないといえばないんだけど、getParameter()をつかわず、
ServletInputStream si = request.getInputStream();
という形で、InputStreamでとってきてしまった場合、エンコードはされていない。
これ以外でも、URLエンコードしたいとき、デコードしなくちゃなんないときというのがある。
そーいったときの、Javaでのエンコード、デコードの方法。
java.net.URLDecoderでデコード、URLEncoderでエンコードする。
なので、それらをimport
import java.net.URLDecoder;
import java.net.URLEncoder;
が必要になる。
で、エンコードしたい場合は、
String encodeStr = URLEncoder.encode(str,"utf-8");
でstrを、URLエンコード(%がつくやつ)して、encodeStrにいれる。
(encode(),decode()は、staticなメソッド)
URLエンコードされたもの(%16進のやつ)を、デコードしてUTF-8の文字列にしたい場合は、
String Str = URLDecoder.decode(encodeStr,"utf-8");
でURLエンコードされたencodeStrを、文字列strにいれる。