在Java中,我們經常需要將字符串編碼成URL和URI格式。雖然它們都是將數據編碼成一種特殊形式的方式,但是它們之間還是有一些區別的。
URI是一個用于標識某個資源的字符串,可以用于指定Web服務端點或其他網絡資源。當我們在Java中對URI進行編碼時,它會按照RFC 3986規范進行編碼。
URI uri = new URI("https://example.com/foo bar"); String encoded = uri.toASCIIString(); System.out.println(encoded); // https://example.com/foo%20bar
在上面的代碼中,我們使用URI類將"https://example.com/foo bar"編碼為"https://example.com/foo%20bar"。這個%20代表了空格。
相比之下,URL編碼是用戶在Web表單中輸入數據時使用的一種編碼。在Java中,我們可以使用URLEncoder類來進行URL編碼。
String str = "foo bar"; String encoded = URLEncoder.encode(str, "UTF-8"); System.out.println(encoded); // foo+bar
在上面的代碼中,我們使用URLEncoder類將"foo bar"編碼為"foo+bar"。這個+號代表了空格。
總的來說,URI編碼用于標識資源,是由RFC 3986規范定義的。而URL編碼是用于在Web表單中編碼用戶輸入數據的。