Java代码如何实现Base64编码解码呢?
下文笔者讲述Base64的编码和解码方法分享,如下所示
Base64编码和解码的实现思路
我们可以使用
sun.misc.BASE64Decoder
和
sun.misc.BASE64Encoder
包中的内容实现base64的编码和解码的操作
例:base64编码和解码的工具类
package com.java265.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 字符串的编码、解密
*
*/
public class Encode {
/**
* 字节转编码为 字符串( UTF-8 编码)
*
* @param bytes
* 输入的字节数组
* @return 字符串
*/
public static String byte2String(byte[] bytes) {
return new String(bytes, StandardCharsets.UTF_8);
}
/**
* 字符串转为 UTF-8 编码的字符串
*
* @param str
* 输入的字符串
* @return UTF-8 字符串
*/
public static String byte2String(String str) {
return byte2String(str.getBytes());
}
/**
* 将 URL 编码的字符还原,默认 UTF-8 编码
*
* @param str
* 已 URL 编码的字符串
* @return 正常的 Java 字符串
*/
public static String urlDecode(String str) {
try {
return URLDecoder.decode(str, StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
return null;
}
}
/**
* 将字符进行 URL 编码,默认 UTF-8 编码
*
* @param str
* 正常的 Java 字符串
*
* @return 已 URL 编码的字符串
*/
public static String urlEncode(String str) {
try {
return URLEncoder.encode(str, StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
return null;
}
}
/**
* url 网址中文乱码处理。
* 如果 Tomcat 过滤器设置了 utf-8 那么这里就不用重复转码了
*
* @param str
* 通常是 url Query String 参数
* @return 中文
*/
public static String urlChinese(String str) {
return byte2String(str.getBytes(StandardCharsets.ISO_8859_1));
}
/**
* BASE64 编码
* @param bytes输入的字节数组
* @return 已编码的字符串
*/
public static String base64Encode(byte[] bytes) {
return new BASE64Encoder().encode(bytes);
}
/**
* BASE64 编码
*
* @param str
* 待编码的字符串
* @return 已编码的字符串
*/
public static String base64Encode(String str) {
return base64Encode(str.getBytes());
}
public static byte[] base64DecodeAsByte(String str) {
BASE64Decoder decoder = new BASE64Decoder();
try {
return decoder.decodeBuffer(str);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* BASE64 解码 这里需要强制捕获异常。
* 中文乱码:
*
* @param str
* 已解码的字符串
* @return 已解码的字符串
*/
public static String base64Decode(String str) {
return byte2String(base64DecodeAsByte(str));
}
}
Base64编码和解码的示例
static String str = "java265.com是我最爱的网站";
assertEquals("abc", byte2String(new byte[] {97, 98, 99}));
assertEquals("java", byte2String("java"));
assertEquals("java265.com是我最爱的网站", byte2String(str));
assertEquals(urlDecode(urlEncode(str)), str);
assertEquals(base64Deode(base64Encode(str)), str);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


