Melihat halaman web pengkodean URL Sekolah W3, dikatakan bahwa @
harus dikodekan sebagai %40
, dan space
seharusnya dikodekan sebagai %20
.
Saya sudah mencoba URLEncoder
dan URI
, tetapi cara di atas juga tidak berhasil:
import java.net.URI;
import java.net.URLEncoder;
public class Test {
public static void main(String[] args) throws Exception {
// Prints me%40home.com (CORRECT)
System.out.println(URLEncoder.encode("[email protected]", "UTF-8"));
// Prints Email+Address (WRONG: Should be Email%20Address)
System.out.println(URLEncoder.encode("Email Address", "UTF-8"));
// http://www.home.com/test?Email%[email protected]
// (WRONG: it has not encoded the @ in the email address)
URI uri = new URI("http", "www.home.com", "/test", "Email [email protected]", null);
System.out.println(uri.toString());
}
}
Untuk beberapa alasan, URLEncoder
memberi spasi pada alamat email dengan benar tetapi tidak menggunakan spasi, dan URI
memberi spasi pada mata uang tetapi tidak memberi spasi pada alamat email.
Bagaimana saya harus mengkodekan 2 parameter ini agar konsisten dengan apa yang dikatakan w3schools benar (atau apakah w3schools salah?)
URLEncoder
tidak mengkodekan sesuai spesifikasi URL tetapi sesuai dengan formatapplication/x-www-form-urlencoded
MIME (yang diharapkan sebagian besar server aplikasi untuk kunci/nilai parameter.) TipeURI
mengkodekan sesuai dokumentasinya - yaitu, ini bukan yang lengkap Pembuat URL. Perhatikan bahwa bagian URI yang berbeda memiliki aturan yang berbeda. Lihat postingan ini untuk mengetahui analisis lebih lanjut. - person McDowell   schedule 14.01.2013