java中使用java.util.base64编码解码string需显式指定utf-8编码:先getbytes(standardcharsets.utf_8)再encodetostring()编码,解码时用decode()转字节数组后以相同编码构造string;url场景应选用geturlencoder()/geturldecoder()替代标准编码器。

<p>Java 中使用 <code>java.util.Base64</code> 进行 String 的 Base64 编码和解码非常简单,核心是先将字符串转为字节数组(指定字符编码),再用 Base64 工具类处理。</p> <h3>String 转 Base64 编码</h3> <p>必须显式指定字符编码(如 UTF-8),避免平台默认编码不一致导致解码失败。</p>
- 调用
Base64.getEncoder().encodeToString(byte[]) - 原始字符串先用
.getBytes(StandardCharsets.UTF_8)转字节数组
示例:
<code>String original = "Hello 世界"; String encoded = Base64.getEncoder().encodeToString(original.getBytes(StandardCharsets.UTF_8)); // 结果类似:SGVsbG8g5L2g5aW9</code>
Base64 字符串解码回 String
解码时同样需用相同字符编码还原字符串,否则中文等可能乱码。
- 用
Base64.getDecoder().decode(String)得到字节数组 - 再用
new String(byte[], StandardCharsets.UTF_8)构造字符串
示例:
<code>String decoded = new String(Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8); // 恢复为:"Hello 世界"</code>
注意 URL 安全 Base64 编码(可选)
如果 Base64 结果用于 URL 或文件名,应使用 URL 安全变体,它用 '-' 和 '_' 替代 '+' 和 '/',且不带换行。
- 编码:用
Base64.getUrlEncoder() - 解码:对应用
Base64.getUrlDecoder()
二者兼容标准 Base64,但更适配 Web 场景。
常见错误提醒
直接对字符串调用 getBytes() 不指定编码,会依赖系统默认编码(如 Windows 的 GBK),极易在不同环境解码失败。
- 永远显式传入
StandardCharsets.UTF_8 - 解码时若抛出
IllegalArgumentException,通常是输入字符串非法(长度非 4 的倍数、含非法字符) - Base64 编码结果末尾的 '=' 是填充符,不能省略或修改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











