京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Java Base64转换,Java Base64工具类

2020-3-20 16:13| 发布者: zhaojun917| 查看: 862| 评论: 0

摘要: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。一、Base64优、缺点优点:1、减少了http请求;2、数据就是图片;3、简单的加密(一般人看不懂 ...

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

 

一、Base64优、缺点

优点:

1、减少了http请求;

2、数据就是图片;

3、简单的加密(一般人看不懂)

缺点:

1、图片转换成Base64字符串,字符串会很长

2、影响到数据库性能

 

二、Base64显示方式:

Java代码  收藏代码
  1. data:,文本数据  
  2. data:text/plain,文本数据  
  3. data:text/html,HTML代码  
  4. data:text/html;base64,base64编码的HTML代码  
  5. data:text/css,CSS代码  
  6. data:text/css;base64,base64编码的CSS代码  
  7. data:text/JavaScript,Javascript代码  
  8. data:text/javascript;base64,base64编码的Javascript代码  
  9. data:image/gif;base64,base64编码的gif图片数据  
  10. data:image/png;base64,base64编码的png图片数据  
  11. data:image/jpeg;base64,base64编码的jpeg图片数据  
  12. data:image/x-icon;base64,base64编码的icon图片数据  

 

Html标签使用

Html代码  收藏代码
  1. <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAwADAAAD/2w" alt="Jpeg图片"/>  

 

CSS中使用:

Html代码  收藏代码
  1. background-image: url("data:image/png;base64,iVBORw0KGgo=...");  

 

 三、Base64转换工具类:

1、使用JDK6自带的(不建议使用)

Java代码  收藏代码
  1. import sun.misc.BASE64Encoder;   
  2. import sun.misc.BASE64Decoder;  
  3. //编码  
  4. BASE64Encoder encoder = new BASE64Encoder();    
  5. String imageString = encoder.encode(byteArray);//转换成Base64形式  
  6.   
  7. //解码  
  8. BASE64Decoder decoder = new BASE64Decoder();    
  9. byte[] imageByteArray = decoder.decodeBuffer(imageString);    

 

但这个性能一般,而且转换出来的base64字符串会有换行符,可能还需要替换换行符,避免在某些场景因为分行导致出错。

 

2、使用Jdk8的Base64工具类(优先考虑使用)

Java代码  收藏代码
  1. java.util.Base64  
  2.   
  3. //编码  
  4. Base64.getEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));  
  5.   
  6. //解码  
  7. Base64.getDecoder().decode("c29tZSBzdHJpbmc=");  
  8.   
  9. //URL编码  
  10. //URL对反斜线“/”有特殊的意义,因此URL编码需要替换掉它,使用下划线替换  
  11. Base64.getUrlEncoder().encodeToString("test.do?abcd".getBytes("utf-8"));  
  12.   
  13. //MIME编码  
  14. //每一行输出不超过76个字符,而且每行以“\r\n”符结束  
  15. Base64.getMimeEncoder().encodeToString("aaaaaaaa".getBytes("utf-8"));  
  16.   
  17. //流文件编码、解码  
  18. Base64.getEncoder().wrap(outputStream);   
  19. Base64.getDecoder().wrap(inputStream);  

 性能超好,如果已经使用JDK8,直接使用这个。

 

基本例子:

Java代码  收藏代码
  1. String base64String  = Base64.getEncoder().encodeToString("我是谁呢?".getBytes("UTF-8"));  
  2. System.out.println("base64String=" +base64String);  
  3.           
  4. byte[] stringByte  = Base64.getDecoder().decode(base64String);  
  5. System.out.println("stringByte=" + new String(stringByte));  

 结果:

Java代码  收藏代码
  1. base64String=5oiR5piv6LCB5ZGi77yf  
  2. stringByte=我是谁呢?  

 

 

3、使用Spring提供的Base64Utils类

Java代码  收藏代码
  1. org.springframework.util.Base64Utils;  

 

4、使用apache中的Base64

Java代码  收藏代码
  1. org.apache.commons.codec.binary.Base64  
关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-8-16 02:14 , Processed in 0.035552 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部