ฉันได้ทดลองใช้โค้ด Java หลายบิตโดยพยายามสร้างสิ่งที่จะเข้ารหัสสตริงที่มีเครื่องหมายคำพูดช่องว่างและอักขระ Unicode "แปลกใหม่" และสร้างเอาต์พุตที่เหมือนกับฟังก์ชันencodeURIComponentของ JavaScript
สตริงการทดสอบการทรมานของฉันคือ"A" B ± "
หากฉันป้อนคำสั่ง JavaScript ต่อไปนี้ใน Firebug:
encodeURIComponent('"A" B ± "');
- จากนั้นฉันจะได้รับ:
"%22A%22%20B%20%C2%B1%20%22"
นี่คือโปรแกรม Java ทดสอบเล็กน้อยของฉัน:
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"));
}
}
- โปรแกรมนี้แสดงผลลัพธ์:
URLEncoder.encode คืนค่า% 22A% 22 + B +% C2% B1 +% 22 getBytes ส่งกลับ "A" B ± "
ปิด แต่ไม่มีซิการ์! เป็นวิธีที่ดีที่สุดของการเข้ารหัส UTF-8 สตริงโดยใช้ Java เพื่อที่จะก่อให้เกิดการส่งออกเช่นเดียวกับ JavaScript อะไรencodeURIComponent
?
แก้ไข:ฉันใช้ Java 1.4 และย้ายไปที่ Java 5 ในไม่ช้า