URLエンコードの気を付けるポイント
URL エンコードにも言語により少し異なる箇所があります。これによりメッセージが上手く解釈されない場合があります。 Java 言語でのURLエンコード処理では「*」「-」「_」の3つの記号が変換されません。 また、半角スペースは「+」に置き換わります。 これは仕様のURLエンコードです。 URLDecoder についてもその仕様に則ってデコードします。 構築するシステム全体がこのルールにのっとっていればつくられているうちは大丈夫ですが 問題が生じやすいのは開発言語をまたいで URL エンコードされた文字列を処理する場合です。 例えば JavaScript の URL エンコード処理では、半角スペースは「%20」に置き換わります。 また JavaScript の encodeURI 関数では「;/?:@&=+$-_!~*.,()#’」の記号がエンコードされません。 フロントサイドに JavaScript を多用する昨今、JavaScript で生成したエンコード文字列を Java で処理する、 またその逆の場合においても、エンコード/デコードが上手くいかなくなることは、良く起こりがちな問題です。 環境や言語を踏まえて、設計の段階でどのURLエンコードルールに合わせるのかを明確にしておくことは重要です。