Tôi đã thử nghiệm với nhiều đoạn mã Java khác nhau để cố gắng tìm ra thứ gì đó sẽ mã hóa một chuỗi chứa dấu ngoặc kép, dấu cách và các ký tự Unicode "kỳ lạ" và tạo ra đầu ra giống với hàm encodeURIComponent của JavaScript .
Chuỗi kiểm tra tra tấn của tôi là: "A" B ± "
Nếu tôi nhập câu lệnh JavaScript sau vào Firebug:
encodeURIComponent('"A" B ± "');
—Sau đó tôi nhận được:
"%22A%22%20B%20%C2%B1%20%22"
Đây là chương trình Java thử nghiệm nhỏ của tôi:
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"));
}
}
—Chương trình này xuất ra:
URLEncoder.encode trả về% 22A% 22 + B +% C2% B1 +% 22 getBytes trả về "A" B ± "
Đóng, nhưng không có xì gà! Cách tốt nhất để mã hóa chuỗi UTF-8 bằng Java để nó tạo ra đầu ra giống như JavaScript là encodeURIComponent
gì?
CHỈNH SỬA: Tôi đang sử dụng Java 1.4 sẽ sớm chuyển sang Java 5.