URLEncodeの日本語での実装
- おそらく、二つの可能性(解釈)があるだろう。どっちが正しいとはいえないが
- 1.日本語文字列で一文字づつ解析してエンコードする
- 2.日本語文字列をバイト列とみなしエンコードする
- この場合エスケープしない文字と同一のコードがくるとその部分はエンコードされない。CommonsのURLCodecクラスはこのような実装がされていると思われる。またJava APIの実装を利用するとこんな感じで実現できるはず?
- URLEncoder.encode(new String(encodeText.getBytes("Windows-31J"),"ISO-8859-1"),"ISO-8859-1");
- new String(URLDecoder.decode(decodeText,"ISO-8859-1").getBytes("ISO-8859-1"),"Windows-31J")
-
- 多分.NETやPHPのライブラリもこっちの実装だと思われる。。。