2017-11-13 18 views
-3
私はURLエンコードは、他のライブラリのように動作するように取得するには、このような愚かなS **トンを行うには持っています

(iOSのは、Javascriptの...)がjava.net.URLEncoderはバグがあるか、標準のエンコーディングに書かれていないので:なぜ他の人のようにurlEncoder.encodeを動作させることができないのですか?

URLEncoder.encode(normalizeString(str), StandardCharsets.UTF_8.displayName()) 
        .replace("+", "%20") 
        .replace("%40", "@") 
        .replace("*", "%2A"); 

+*@である間にエンコードされたパーセントではありません。そして...今ではスラッシュをコード化しています/。重量!これについては良い説明がありますか?私は間違った文字セットを使用していますか?

+3

質問を編集して[mcve]を提供することをお勧めします。これには 'encode()'への文字入力( 'normalizeString(str)'ではなく、何も返さないこと)、 'encode()'呼び出しが返すもの、そしてなぜそれが間違っていると思われるのかが含まれます。 IOW、失敗したテストケースを公開し、おそらく失敗の原因を特定するのに役立ちます。 – CommonsWare

答えて

1

あなたはURLEncoderの役割を誤解していると思います。 UrlEncoderは、URLをHTMLフォームでエンコードする方法についてHTML Specificationsを実装しています。

あなたのケースでは、ライブラリorg.apache.commons.textが良い解決策になると思います。あなたが望むように文字をエスケープする方法をあなたに提供します。

+1

ありがとうございました。私は、 'UrlEscapers.urlFragmentEscaper()。escape(string)'のようにパーセントエンコードであるGoogleのGuava libを使い終えました。 – user636066

関連する問題