版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yan88888888888888888/article/details/88415284
昨天遇到了一个问题,项目有些老旧,开发环境用的javase1.6,运行环境是jdk1.7,都无法使用jdk8自带的编码和解码。
如果有jdk8,请使用这几行代码。
String orig = "hello world!";
String desc =
Base64.getEncoder().encodeToString(orig.getBytes(StandardCharsets.UTF_8));
System.out.println("加密后的字符串为:"+desc);
String unDecodeStr=new
String(Base64.getDecoder().decode(desc),StandardCharsets.UTF_8);
System.out.println("解密后的字符串为"+unDecodeStr)
如果是8以下,可以用以下两种方法解决。
1、尝试找你项目中的其它包里面有没有这个base64相关的包,比如我的项目里有个 fastjson 包,就可以使用
// 类 com.alibaba.fastjson.util.Base64
String nStr =new String(Base64.decodeFast(encodeStr));
System.out.println(nStr);
2、也有开源的jar包, javabase64-1.2.jar,可以直接点击后面进行下载下载地址。引入这个jar包后,几行代码就可以实现编码与解码了:
示例代码:
String类型 进行Base64编码
String encoded = Base64.encode("Hello, world!");
String类型 进行Base64解码
String decoded = Base64.decode(encoded);
指定字符编码方式
String encoded = Base64.encode("Hello, world!", "UTF-8");
String decoded = Base64.decode(encoded, "UTF-8");
对文件进行编码:
如果文件比较小,可以通过以下方式,直接读取到内存中进行编码处理
byte[] source = ...; // load your data here
byte[] encoded = Base64.encode(source);
byte[] decoded = Base64.decode(encoded);
如果大件比较大,则建议使用stream:
代码示例Base64编码:
InputStream inputStream = new FileInputStream("source.jpg");
OutputStream outputStream = new FileOutputStream("encoded.b64");
Base64.encode(inputStream, outputStream);
outputStream.close();
inputStream.close();
代码示例Base64解码:
InputStream inputStream = new FileInputStream("encoded.b64");
OutputStream outputStream = new FileOutputStream("decoded.jpg");
Base64.decode(inputStream, outputStream);
outputStream.close();
inputStream.close();
参考原文:https://blog.csdn.net/chenleixing/article/details/46543901