我發現在Java中使用java.net.URLEncoder.encode
進行轉義的各種帖子。 但是我在docs for URL
已經發現:我如何在Java中轉義URL(文檔不明確)?
的
URLEncoder
和URLDecoder
類也可以使用,但只有HTML格式編碼的,這是不一樣的在RFC2396中定義的編碼方案。
有人可以解釋我這種情況嗎?
我發現在Java中使用java.net.URLEncoder.encode
進行轉義的各種帖子。 但是我在docs for URL
已經發現:我如何在Java中轉義URL(文檔不明確)?
的
URLEncoder
和URLDecoder
類也可以使用,但只有HTML格式編碼的,這是不一樣的在RFC2396中定義的編碼方案。
有人可以解釋我這種情況嗎?
該文檔正確地建議使用URI類。 URLEncoder仍然提到的原因是我認爲歷史原因URLEncoder自1.0以來一直存在,而URI是在1.4中添加的。
URLEncoder儘管有其名稱,但用於編碼URL 參數或POST參數。
在查詢字符串之前正確編碼URL的正確方法是通過新的URI(null,String,null).toURL()。
您可以使用URI。例如:
URI uri = new URI("http","google.com","/ a z.html","asd= z%#@@#");
System.out.println(uri.toString());
//returns http://google.com/%20a%20z.html#asd=%20z%25%[email protected]@%23
注意,單個參數構造函數不轉義字符,所以如果你這樣做,它會拋出一個異常:
URI uri = new URI("http://google.com/ a z.html?asd= z%#@@#");
從一個URI你可以得到一個URL做:
URL uri.toURL();