1. ホーム

[解決済み】URLEncoderでスペース文字が変換されない。

2022-04-09 05:59:39

質問

期待しています

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8"));

を出力します。

Hello%20World

(20はスペースを表すASCII 16進コード)

しかし、私が得たものは

Hello+World

私のやり方が悪いのでしょうか?どのような方法で行えばよいのでしょうか?

どのように解決するのですか?

これは期待通りの動作です。 URLEncoder は、HTML フォームにおける URL のエンコード方法に関する HTML 仕様を実装しています。

より ジャバドックス :

このクラスには、以下の静的メソッドが含まれています。 への文字列の変換を行います。 application/x-www-form-urlencoded MIME のフォーマットで表示されます。

から、そして HTML仕様 :

application/x-www-form-urlencoded

このコンテンツタイプで送信されるフォーム は、次のように符号化しなければならない。

  1. コントロールの名前と値はエスケープされる。空白文字が置換される by `+'

など、交換する必要があります。

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));