4

" " (スペース) などの特殊文字が正しい方法 (スペースの場合は %20) に置き換えられるように URL をエンコードしたい。私がオンラインで見つけた解決策はどれも期待どおりに機能していません。

Apache Commons を使用してみました:

import org.apache.commons.lang.StringEscapeUtils;

public class MyTest {

    public static void main(String[] args)  {

        String bla="http://www.bla.com/bla.php?par1=bla bla bla";

        System.out.println(StringEscapeUtils.escapeHtml(bla));

    }
}

しかし、次のように返されます。

http://www.bla.com/bla.php?par1=bla bla bla

私はjava.net.URLで試しました:

import java.net.MalformedURLException;
import java.net.URL;

public class MyTest {


    public static void main(String[] args) throws MalformedURLException {

        String bla="http://www.bla.com/bla.php?par1=bla bla bla";

        URL url = new URL(bla);


        System.out.println(url);

    }

}

しかし、次のように返されます。

http://www.bla.com/bla.php?par1=bla bla bla

私は期待します:

http://www.bla.com/bla.php?par1=bla%20bla%20bla

それを行う方法はありますか?

4

1 に答える 1

4

クラスURIの助けを借りて に分割してみてください:URL

String sUrl = "http://bla.com:8080/test and test/bla.php?query=bla and bla";
URL url = new URL(sUrl);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
String canonical = uri.toString();

System.out.println(canonical);

出力:

http://bla.com:8080/test%20and%20test/bla.php?query=bla%20and%20bla
于 2013-09-19T16:40:52.500 に答える