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);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。