在Java
中如果要完成URL
的编码和解码操作,可以使用URLEncoder
和URLDecoder
两个类,URLEncoder
可以为传递的内容进行编码,而URLDecoder
可以为传递的内容进行解码。这两个类常用的方法如下。
序号 |
URLEncoder类常用方法 |
描述 |
1 |
public static String encode(String s, String enc) |
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。 |
序号 |
URLDecoder类常用方法 |
描述 |
1 |
public static String decode(String s, String enc) |
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。 |
实例:编码和解码操作 |
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package my.net.encoder_decoder;
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder;
public class Encode_Decode { public static void main(String[] args) throws UnsupportedEncodingException { String urlStr = "file:///D:/dev/workspace/Net/%E4%B8%8A%E4%B8%80%E7%AF%87%E5%8D%9A%E5%AE%A2.html"; String urlDecoder = URLDecoder.decode(urlStr, "utf-8"); String urlEncoderutf8 = URLEncoder.encode(urlDecoder, "utf-8"); System.out.println("原字符串 :"+urlStr); System.out.println("解码后的字符串 :"+urlDecoder); System.out.println("重新编码为utf-8:"+urlEncoderutf8); System.out.println("再次解码 :"+URLDecoder.decode(urlEncoderutf8, "utf8")); System.out.println(); } }
|
运行结果:
1 2 3 4 5
| 原字符串 :file:///D:/dev/workspace/Net/%E4%B8%8A%E4%B8%80%E7%AF%87%E5%8D%9A%E5%AE%A2.html 解码后的字符串 :file:///D:/dev/workspace/Net/上一篇博客.html 重新编码为utf-8:file%3A%2F%2F%2FD%3A%2Fdev%2Fworkspace%2FNet%2F%E4%B8%8A%E4%B8%80%E7%AF%87%E5%8D%9A%E5%AE%A2.html 再次解码 :file:///D:/dev/workspace/Net/上一篇博客.html
|
中文转为Unicode字符
1 2 3 4 5 6 7 8 9 10 11
| String str = "中文"; try { String encodeStr = URLEncoder.encode(str, "utf-16be"); encodeStr = encodeStr.replaceAll("%(.{2})%(.{2})", "\\\\u$1$2"); System.out.println(encodeStr); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
|
运行结果: