2013年6月24日月曜日

URLEncoder/URLDecoderの文字化け対策

サーブレットを使ったWebコンテナやAndroidのサーバ間の通信で、日本語や( ) { } [ ] < > ! # $ % & " ' ` ^ ~ = \ | ; : + / ? , などの禁則文字をURLエンコーディングする際、java.net.URLEncoderを使って行うと上手く変換されません。
サーブレットを使ったURLパラメータにはクライアントでURLデコードした値を渡すべきなのだそうです。
しかしAndroidのアプリでのサーブレットとの通信を行う上で、変換しないまま送りたい!って時にjava.net.URLEncoderを使ったら、変換が上手くいきませんでした。

そんな時にApache Commonsのcommons-codecの「URLCodec」を使ったら上手くいったので、メモとして記載したいと思います。

前提条件

  • JBoss as 7.1.1 final
  • java 1.7.XX
  • apache.commons.codec 1.7
  • Windows XP Pro 32bit

ダウンロード先

http://commons.apache.org/proper/commons-codec/download_codec.cgi

サンプル

以下のように使用します。

URLCodec codec = new URLCodec("UTF-8");
try {
 //%20は空白であり、Codecでは+になるのでリプレイスしてあげる
 ///はスラッシュであり、Codecでは%2Fになるのでリプレイスしてあげる
 System.out.println(codec.encode(fileName).replace("+", "%20").replace("%2F", "/"));
} catch (EncoderException e) {
 // TODO 自動生成された catch ブロック
 e.printStackTrace();
}

参考文献

Written By : // 10:11
Category:

0 コメント:

コメントを投稿

 

About

このブログは筆者の備忘録として色々記載しています。

Blog Archive

Powered by Blogger.