2012-09-27 17 views
0

的URL給定一個URL編碼,如這一個,如何與Java

http://www.example.com/some目錄/某些文件

你怎麼編碼這個網址?瀏覽器自動對它進行編碼。在Java中,我找不到一個現成的函數。我懷疑應該有這樣的功能,因爲這通常是需要的。

當我嘗試使用帶有單個String的構造函數使用URI類並解析URL的組件(如權限,路徑等)時,它會給出錯誤,因爲它期望編碼的URL。

你知道一個現成的函數,將產生,例如在這種情況下:

http://www.example.com/some%20directory/some%20file

+0

[URLEncoder的(http://docs.oracle .com/javase/1.5.0/docs/api/java/net/URLEncoder.html)符合[HTML 4.01規範](http://www.w3.org/TR/html4/)。 –

+0

相關http://stackoverflow.com/questions/26254051/java-how-to-encode-url-path-for-non-latin-characters –

回答

3

試試這個:

final URL url = new URL("http://www.example.com/some directory/some file"); 
final URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), null); 

System.out.println(uri.toASCIIString()); 
+0

這不是一個單一的URL。我正在尋找一個通用函數。否則,我可以手動進行,對吧?正如我在問題中解釋的那樣,URI類不接受尚未編碼的URL。所以我不能將它首先分成組件。 – memento

+0

好的,我編輯這篇文章並添加網址。那麼你不必手動去做... –

+0

太棒了。我想這是最乾淨的方式。我試圖將URL字符串提供給URI類,而不是URL類。謝謝! – memento