常见问题
Base64 是加密吗?
不是。Base64 只是把二进制数据转成文本的编码方式,任何人都能一键还原,没有任何保密作用。需要保密请使用 AES 等真正的加密算法。
为什么 Base64 解码后中文乱码?
通常是字符集不匹配——原文不是按 UTF-8 编码的(例如 GBK)。用正确的字符集重新编码后再转换即可。
Base64 会让内容变长多少?
大约增加 33%(每 3 字节变成 4 个字符),另外可能有少量填充符。这也是大文件不适合转成 Base64 传输的原因。
关于这个工具
字母表是标准 Base64 的 64 个字符(A-Z、a-z、0-9、+、/),每 3 个字节编成 4 个字符,不足 4 的倍数时用 = 补齐,输出是单行不换行的形式。
中文能转是因为先看编码:浏览器原生的 btoa 只接受 Latin-1,直接喂中文会抛错,本工具先把字符串按 UTF-8 拆成字节再编码。一个汉字是 3 个字节,对应 4 个 Base64 字符;一个 Emoji 是 4 个字节,对应 8 个字符 —— 拿长度就能反推原文大概是中文还是非中文。解码相反:atob 取回字节串,再按 UTF-8 还原成文字。
它不是加密:没有密钥,任何人拿到就能还原。真正的边界是字母表变体 —— 这里是标准 Base64(+ 与 /),而 JWT、URL 参数用的是 base64url(- 与 _),两者不能直接互解,遇到 - _ 要先换回 + /;MIME 形式会每 76 个字符插换行,解码前得去掉;缺 = 补齐的字符串也解不出来。
本工具处理的是文本。图片、PDF 这类文件请用「图片转 Base64」,那边给出的是能直接放进 src 的 DataURL。文件越大 Base64 越不划算:体积涨约三分之一,还要多一次编解码开销。