http://localhost:9000/space test
URL を Web ブラウザーのアドレス バーに入力すると、サーバーが呼び出されますhttp://localhost:9000/space%20test
。
http://localhost:9000/specÁÉÍtest
にもエンコードされhttp://localhost:9000/spec%C3%81%C3%89%C3%8Dtest
ます。
エンコードされた URL をアドレス バーに配置した場合 (つまりhttp://localhost:9000/space%20test
とhttp://localhost:9000/spec%C3%81%C3%89%C3%8Dtest
)、それらは同じままです (二重にエンコードされることはありません)。
このエンコーディングを行う Java API またはライブラリはありますか? URL はユーザーからのものであるため、エンコードされているかどうかはわかりません。
(入力文字列を検索し、見つからない場合はエンコードするだけで十分ではないか%
、またはこれが機能しない特別なケースはありますか?)
編集:
URLEncoder.encode("space%20test", "UTF-8")
二重にエンコードspace%2520test
されているため、これは私が望むものではありません。
編集2:
さらに、ブラウザは、 などhttp://localhost:9000/specÁÉ%C3%8Dtest
の部分的にエンコードされた URL を二重エンコードせずに処理します。この場合、サーバーは次の URL を受け取ります: http://localhost:9000/spec%C3%81%C3%89%C3%8Dtest
. のエンコード形式と同じです...specÁÉÍtest
。