今天带来java base64编码、解码的三种方式总结教程详解
1.用法介绍
方式一:DatatypeConverter
说明:使用jdk自带的DatatypeConverter.java类实现,但是jdk版本必须>=1.6。
import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter;
编码
/** * base64编码之方法一 * @explain DatatypeConverter.java实现 * @param str * 待编码字符串 * @return 编码字符串 */ public static String encode(String str) { // base64字符串 String base64Str = ""; try { // String-->byte[] byte[] data = str.getBytes("utf-8"); // 编码 base64Str = DatatypeConverter.printBase64Binary(data); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return base64Str; }
解码
/** ?* base64解码之方法一 ?* @explain DatatypeConverter.java实现 ?* @param base64Str ?*??????????? 待解码字符串 ?* @return 解码字符串 ?*/ public static String decode(String base64Str) { ????// 解码后的字符串 ????String str = ""; ????// 解码 ????byte[] base64Data = DatatypeConverter.parseBase64Binary(base64Str); ????try { ????????// byte[]-->String ????????str = new String(base64Data, "utf-8"); ????} catch (UnsupportedEncodingException e) { ????????e.printStackTrace(); ????} ????return str; }
方式二:Base64
说明:使用jdk自带的Base64.java类实现,但是jdk版本必须>=1.8。
import java.io.UnsupportedEncodingException; import java.util.Base64;
编码
/** ?* base64编码之方法二 ?* @explain Base64.java实现 ?* @param str ?*??????????? 待编码字符串 ?* @return 编码字符串 ?*/ public static String encode2(String str) { ????// base64字符串 ????String base64Str = ""; ????try { ????????// String-->byte[] ????????byte[] data = str.getBytes("utf-8"); ????????// 编码 ????????base64Str =Base64.getEncoder().encodeToString(data); ????} catch (UnsupportedEncodingException e) { ????????e.printStackTrace(); ????} ????return base64Str; }
解码
/** ?* base64解码之方法二 ?* @explain Base64.java实现 ?* @param base64Str ?*??????????? 待解码字符串 ?* @return 解码字符串 ?*/ public static String decode2(String base64Str) { ????// 解码后的字符串 ????String str = ""; ????// 解码 ????byte[] base64Data = Base64.getDecoder().decode(base64Str); ????try { ????????// byte[]-->String ????????str = new String(base64Data, "utf-8"); ????} catch (UnsupportedEncodingException e) { ????????e.printStackTrace(); ????} ????return str; }
方式三:Base64
所需jar包:commons-codec.jar
import java.io.UnsupportedEncodingException; import org.apache测试数据mons.codec.binary.Base64;
编码
/** ?* base64编码之方法三 ?* @explain Base64.java实现 ?* @param str ?*??????????? 待编码字符串 ?* @return 编码字符串 ?*/ public static String encode3(String str) { ????// base64字符串 ????String base64Str = ""; ????try { ????????// String-->byte[] ????????byte[] data = str.getBytes("utf-8"); ????????// 编码 ????????base64Str =Base64.encodeBase64String(data).replaceAll("\r\n", ""); ????} catch (UnsupportedEncodingException e) { ????????e.printStackTrace(); ????} ????return base64Str; }
解码
/** ?* base64解码之方法三 ?* @explain Base64.java实现 ?* @param base64Str ?*??????????? 待解码字符串 ?* @return 解码字符串 ?*/ public static String decode3(String base64Str) { ????// 解码后的字符串 ????String str = ""; ????// 解码 ????byte[] base64Data = Base64.decodeBase64(base64Str); ????try { ????????// byte[]-->String ????????str = new String(base64Data, "utf-8"); ????} catch (UnsupportedEncodingException e) { ????????e.printStackTrace(); ????} ????return str; }
2.测试
public static void main(String[] args) { ????String str = "http://HdhCmsTestcnblogs测试数据/Marydon20170307"; ????String base64 = Base64Utils.encode(str);// aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9NYXJ5ZG9uMjAxNzAzMDc= ????System.out.println(base64); ????String str2 = Base64Utils.decode(base64); ????System.out.println(str.equals(str2));// true ????? }
3.效率比较
快-->慢:方式二 > 方式一 > 方式三
因此,如果项目用的是jdk1.8,最佳选择是方式二;jdk1.6,最佳选择是方式一。
以上就是java base64编码、解码的三种方式总结的详细内容,更多关于java base64编码、解码的资料请关注其它相关文章!
以上就是关于java base64编码、解码的三种方式总结全部内容,感谢大家支持。
查看更多关于java base64编码、解码的三种方式总结的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did18328