java URLEncoder 和Base64.encode()
Posted 小转
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java URLEncoder 和Base64.encode()相关的知识,希望对你有一定的参考价值。
参考:
http://www.360doc.com/content/10/1103/12/1485725_66213001.shtml (URLEncode)
http://blog.csdn.net/uikoo9/article/details/27981219
计算机中的数据都是二进制的,不管是字符串还是文件,而加密后的也是二进制的,
而我们要看到的往往是字符串,本文就介绍了将byte[]转为各种进制以及base64编码。
是一种编码方式,可以理解为复杂的进制,很多算法加密后输出的都是byte[],而这个byte[]对我们显示的形式是不友好的(乱码),
所以一般都是转为base64的,当然也可以转为其他进制。
public static void main(String[] s){
String sss = "Aa123Aa程序";
byte[] bytes = null;
try {
bytes = sss.getBytes("UTF-8");
for(byte b: bytes){
System.out.print(b+"(#)");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String encode;
try {
encode = Base64.encode(bytes);
System.out.println("\nBase64.encode 结果: " + encode);
byte[] bytess = Base64.decode(encode);
for(byte b: bytess){
System.out.print(b+"(#)");
}
String sss2 = new String(bytess, "UTF-8");
System.out.print("\nsss2 === "+ sss2);
sss = "Aa123 Aa程序#程序*程序+and程序";
encode = java.net.URLEncoder.encode(sss, "UTF-8");
System.out.println("\njava.net.URLEncoder 结果: " + encode);
String sss3 = URLDecoder.decode(encode, "UTF-8");
System.out.println("\njava.net.URLDecoder 结果: " + sss3);
} catch (Exception e) {
e.printStackTrace();
}
运行结果:
65(#)97(#)49(#)50(#)51(#)65(#)97(#)-25(#)-88(#)-117(#)-27(#)-70(#)-113(#)
Base64.encode 结果: QWExMjNBYeeoi+W6jw==
65(#)97(#)49(#)50(#)51(#)65(#)97(#)-25(#)-88(#)-117(#)-27(#)-70(#)-113(#)
sss2 === Aa123Aa程序
java.net.URLEncoder 结果: Aa123+Aa%E7%A8%8B%E5%BA%8F%23%E7%A8%8B%E5%BA%8F*%E7%A8%8B%E5%BA%8F%2Band%E7%A8%8B%E5%BA%8F
java.net.URLDecoder 结果: Aa123 Aa程序#程序*程序+and程序
以上是关于java URLEncoder 和Base64.encode()的主要内容,如果未能解决你的问题,请参考以下文章
Java 使用URLEncoder.encode和URLDecoder.decode编解码(utf-8)中文及特殊字符
java.net.URLEncoder.encode(String) 已弃用,我应该改用啥?