Saya telah bereksperimen dengan berbagai bit kode Java mencoba menghasilkan sesuatu yang akan menyandikan string yang berisi tanda kutip, spasi dan karakter Unicode "eksotis" dan menghasilkan keluaran yang identik dengan fungsi encodeURIComponent JavaScript .
String uji penyiksaan saya adalah: "A" B ± "
Jika saya memasukkan pernyataan JavaScript berikut di Firebug:
encodeURIComponent('"A" B ± "');
—Lalu saya mendapatkan:
"%22A%22%20B%20%C2%B1%20%22"
Inilah program Java tes kecil saya:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
—Program ini menghasilkan:
URLEncoder.encode mengembalikan% 22A% 22 + B +% C2% B1 +% 22 getBytes mengembalikan "A" B ± "
Dekat, tapi tidak ada cerutu! Apa cara terbaik untuk menyandikan string UTF-8 menggunakan Java sehingga menghasilkan keluaran yang sama dengan JavaScript encodeURIComponent
?
EDIT: Saya menggunakan Java 1.4 segera pindah ke Java 5.