1

Webページ上のいくつかのリンクを解析してから、これらのリンクが存在するかどうかをテストしています。解析されたリンク文字列をURIに変換していますが、問題は、一部のリンクに次のような文字がすでにエンコードされていることです。http: //download.microsoft.com/download/6/3/c/63c1d527-9d7e-4fd6-9867 -fd0632066740 / kinect_qsg%20premium_bndl_en-fr-es.pdf

以下のコードを通過すると、次のようになります: http: //download.microsoft.com/download/6/3/c/63c1d527-9d7e-4fd6-9867-fd0632066740/kinect_qsg%2520premium_bndl_en-fr-es.pdf

ご覧のとおり、これは%20をエンコードしています。これを回避するにはどうすればよいですか?文字列を最初にデコードする必要がありますか?もしそうなら、これを行うための最良の方法は何ですか?

URL url = null;
        URI uri = null;
        try {
            url = new URL(checkUrl);
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        }
        try {
            uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), url.getRef());
        } catch (URISyntaxException e1) {
            e1.printStackTrace();
        }
4

2 に答える 2

2

URLDecoderクラスを使用してみてください。

        URL url = null;
        URI uri = null;
        String checkUrl = "http://download.microsoft.com/download/6/3/c/63c1d527-9d7e-4fd6-9867-fd0632066740/kinect_qsg%20premium_bndl_en-fr-es.pdf"; 
        try {
            url = new URL(URLDecoder.decode(checkUrl,"UTF-8"));
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }
        try {
            uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), url.getRef());
            System.out.println(uri.getHost());
        } catch (URISyntaxException e1) {
            e1.printStackTrace();
        }

クラスのクラスパスはjava.net.URLDecoderです。

于 2012-05-22T11:30:28.863 に答える
1

次を使用できます。

String decoded = URLDecoder.decode(yorUrl, "UTF-8");
于 2012-05-22T11:31:19.087 に答える