Base64 编解码说明
使用教程
在上方输入原文,点编码;或把 Base64 贴进去,点解码。解码会先去掉首尾空白。两侧都可以复制。编码结果出现在下方只读框里,不会自动写进剪贴板,避免误覆盖你正在复制的别的内容。
这一页处理的是文本。中文可以编码,因为会先按 UTF-8 转成字节再做 Base64。不要把图片、压缩包的二进制直接贴进文本框,那样对不齐字节。文本不会上传,编码和解码都用浏览器里的 btoa 与 atob。
原理简述
Base64 把每 3 个字节拆成 4 个 6 比特的下标,映射到 A–Z、a–z、0–9、加号和斜杠。长度不是 3 的倍数时,用等号补齐。它是表示法,不是加密:任何人都能解回原文,不需要密钥。
浏览器的 btoa 只接受拉丁字符范围,直接丢中文会报错。页面先用 encodeURIComponent 得到 UTF-8 百分号编码,再转成 btoa 能吃的字节串。解码是相反的路径。因此这里的结果和「把 UTF-8 字节做标准 Base64」一致,而不是某种私有字母表。
相关知识
邮件和部分旧接口习惯每 76 个字符换行。本页的 btoa 不自动折行。若对方拒绝一行太长的串,需要你自己按宽度折行;反过来,解码时如果中间夹了换行,atob 可能失败,先合成一行再试。数据 URL 里 data: 前缀和逗号后的那一段才是 Base64,不要把前缀一起拿来解码。也不要把它当密码存储:源代码、日志和截图里的 Base64 等于明文。
常见问题
- 编码之后为什么比原文长?
- 3 个字节变成 4 个字符,再加上可能的等号填充,体积大约增加三分之一。这是表示方式的代价,不是压缩。
- 解码报错通常是什么原因?
- 常见是混进了空格或换行、少了等号、把数据 URL 的前缀也贴了进来,或原文其实不是 Base64。本页解码只去掉首尾空白。
- 能用来保护接口参数吗?
- 不能。Base64 谁都能解。需要保密时用下一页的 AES,或让服务端做真正的鉴权,而不是把字段编码一下。