Base64 中文乱码怎么解决?
说明 Base64 不是加密,中文乱码通常来自字符集不一致,并给出 UTF-8 编码解码排查方法。
打开 Base64 编解码工具Base64 本身不保存字符集信息
Base64 只是把二进制数据转换成由 A-Z、a-z、0-9、+、/ 等字符组成的文本表示。它不记录原始内容是 UTF-8、GBK 还是其他编码。
所以“解码乱码”通常不是 Base64 算法错了,而是编码和解码时使用的字符集不一致。中文内容建议统一使用 UTF-8。
浏览器 btoa/atob 的中文问题
浏览器原生 btoa 和 atob 更适合处理 Latin1 字符。直接对中文调用 btoa,可能报错或得到不可预期结果。正确做法是先把中文转成 UTF-8 字节,再做 Base64 编码。
如果你只是临时转换,可以直接使用在线工具;如果写到项目代码里,建议使用 TextEncoder、TextDecoder 或成熟的编码库。
- 编码前确认原始字符串是 UTF-8。
- 解码后如果乱码,尝试按 UTF-8 重新解析字节。
- 接口传参时确认服务端没有二次 URL 编码或截断 + 号。
接口传参里的细节
Base64 字符串里可能包含 +、/、=。放进 URL 查询参数时,这些字符可能被浏览器或服务端当成特殊字符处理,导致解码失败。
如果要放在 URL 里,建议再做 URL 编码;如果放在 JSON 请求体里,通常可以直接传字符串。
常见问题
Base64 是加密吗?
不是。Base64 是编码,任何人拿到字符串都可以解码,不适合保护敏感信息。
Base64 后面的 = 可以删除吗?
不建议随意删除。= 是补位字符,部分解码器可以容错,但保留更稳妥。
图片 Base64 和文字 Base64 一样吗?
底层都是 Base64 编码,但图片通常会带 data:image/png;base64, 这样的 Data URI 前缀。