try {
System.out.println(URLEncoder.encode("This string has spaces","UTF-8"));
System.out.println(URLEncoder.encode("This*string*has*asterisks","UTF-8"));
System.out.println(URLEncoder.encode("This%string%has%percent%signs", "UTF-8"));
System.out.println(URLEncoder.encode("This+string+has+pluses","UTF-8"));
System.out.println(URLEncoder.encode("This/string/has/slashes","UTF-8"));
System.out.println(URLEncoder.encode("This:string:has:colons","UTF-8"));
System.out.println(URLEncoder.encode("This~string~has~tildes","UTF-8"));
System.out.println(URLEncoder.encode("This(string)has(parentheses)", "UTF-8"));
System.out.println(URLEncoder.encode("This.string.has.periods","UTF-8"));
System.out.println(URLEncoder.encode("This=string=has=equals=signs", "UTF-8"));
System.out.println(URLEncoder.encode("This&string&has&ersands","UTF-8"));
System.out.println(URLEncoder.encode("Thiséstringéhasé non-ASCII characters","UTF-8"));
System.out.println(URLEncoder.encode("this中华人民共和国","UTF-8"));
//结果
//This+string+has+spaces
//This*string*has*asterisks
//This%25string%25has%25percent%25signs
//This%2Bstring%2Bhas%2Bpluses
//This%2Fstring%2Fhas%2Fslashes
//This%3Astring%3Ahas%3Acolons
//This%7Estring%7Ehas%7Etildes
//This%28string%29has%28parentheses%29
//This.string.has.periods
//This%3Dstring%3Dhas%3Dequals%3Dsigns
//This%26string%26has%26ersands
//This%C3%A9string%C3%A9has%C3%A9+non-ASCII+characters
//this%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD
} catch (Exception e) {
}
try{
System.out.print(URLDecoder.decode("this%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD","UTF-8"));
}catch(Exception e){}
// 输出结果为this中华人民共和国
}
URLEncoder
URLEncoder类包含将字符串转换为application/x-www-form-urlencoded MIME 格式的静态方法。
URLDecoder
与URLEncoder 类相对应的URLDecoder 类有两种静态方法。它们解码以x-www-form-url-encoded这种形式编码的string。也就是说,它们把所有的加号(+)转换成空格符,把所有的%xx分别转换成与之相对应的字符:
注意
String aa="%E7%9F%B3%E5%88%91";
String aa="我是";
URLEncoder.encode(aa, "UTF-8");
System.out.println(aa);
输出结果为 我是
错误的
正确的使用方法为
String temp= URLEncoder.encode(aa, "UTF-8");
System.out.println(temp);
该方法返回新的String 才是编码后的