我一直在尝试使用各种 Java 代码,试图编码一个包含引号、空格和“奇特的”Unicode 字符的字符串,并产生与 JavaScript 的 EncodeURIComponent函数相同的输出。
我的酷刑测试字符串是: “ A”B ±
如果我在 Firebug 中输入以下 JavaScript 语句:
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 returns %22A%22+B+%C2%B1+%22 getBytes returns "A" B ± "
差不多,但是没有雪茄!使用 Java 编码 UTF-8字符串以使其产生与 JavaScript 的 encodeURIComponent
相同的输出的最佳方法是什么?
编辑: 我即将使用 Java 1.4迁移到 Java 5。