URLEncodeの日本語での実装

  • おそらく、二つの可能性(解釈)があるだろう。どっちが正しいとはいえないが
  • 1.日本語文字列で一文字づつ解析してエンコードする
    • この場合2バイト文字は1バイトづつエンコードされる。Java APIのURLEncoding、URLDecodeクラスはこのような実装がされていると考えられる。
  • 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のライブラリもこっちの実装だと思われる。。。