2017-02-15 19 views
0

を設定します。エンコードURLは、私は、次のWebサイトを参照してください。

入力はに変換され、 "URL"、 "エンコード" を選択し、 "US-ASCII"

http://coderstoolbox.net/string/#!encoding=xml&action=encode&charset=us_ascii

所望の出力。

Javaコードで同じ出力を生成するにはどうすればよいですか?

ありがとうございます。あなたはencodeForUrl https://en.wikipedia.org/wiki/Percent-encoding

ESAPi.encoder().encodeForUrl(linkString)

チェックの詳細を使用することができます

答えて

0

これを使用しても問題なく動作しているようです。

public static String encode(String input) { 
    Pattern doNotReplace = Pattern.compile("[a-zA-Z0-9]"); 

    return input.chars().mapToObj(c->{ 
     if(!doNotReplace.matcher(String.valueOf((char)c)).matches()){ 
      return "%" + (c<256?Integer.toHexString(c):"u"+Integer.toHexString(c)); 
     } 
     return String.valueOf((char)c); 
    }).collect(Collectors.joining("")).toUpperCase(); 
} 

PS:私は、非ASCII文字に接頭辞Uの配置を制限するために256を使用しています。 URLエンコーディングを行う

ビルドJavaクラス(java.net.URLEncoder)であり:256


代替オプション内にある標準のASCII文字の接頭辞Uの必要はありません。しかし、それは少し違った働きをします。 See if it helps

String encoded = URLEncoder.encode(input, "US-ASCII"); 

は、この情報がお役に立てば幸い!

+0

こんにちは、両方のオプションが動作するようです。なぜ第2のオプションは「少し違って」機能しますか?最初のオプションと同じ結果を生むようです。 – user3573403

+0

ウェブサイトの出力が正確ではありません。それは/文字をエンコードすべきですが、そうではありません。 – user3573403

+0

もう1つは違った働きをします。たとえば、スペースを '%20'で置き換えるのではなく、代わりに' + 'で置き換えます。他の文字でも同様のことが起こります。 – anacron

0

それはあなたの要件を満たすか、他の問題に直面していない場合はコメントしてください。

ありがとうございました

+0

こんにちは、ESAPIはどこから来ましたか?それは標準のJDKの一部であるようには見えません。 – user3573403

関連する問題