Base64 编解码
中文按 UTF-8 处理,编解码都在浏览器里完成
点「编码」查看结果
点「解码」查看结果
等待输入
怎么用
- 左边贴原文点「编码」,右边贴 Base64 点「解码」,两个方向互不影响。
- 上方「变体」在标准与 URL 安全之间切换,已有结果会立刻按新变体重算。
- 在输入框里按 Ctrl / ⌘ + Enter 等同于点该框下方的按钮;结果行右侧的 ⧉ 只复制该行的值。
Base64 到底是什么
Base64 是一种用 64 个可打印字符表示二进制数据的编码方式,常见于 JWT、邮件附件、data URL、HTTP Basic 认证头。它既不是加密也不是压缩:拿到字符串的人都能还原出原文,长度还会涨到约 4/3。把密码或身份证号 Base64 一下再传输,等于没做任何保护。
为什么中文容易乱码
浏览器原生的 btoa() 只接受 Latin-1 范围的字符,直接喂中文会抛 InvalidCharacterError。正确做法是先按 UTF-8 编码成字节,再做 Base64——本工具就是这么实现的。反过来解码时,如果字节序列不是合法的 UTF-8(例如它其实是图片或压缩包),这里会直接说明「不是 UTF-8 文本」,而不是甩给你一串问号或乱码。
顺带一个常被问到的换算:一个汉字在 UTF-8 下占 3 字节,Base64 后是 4 个字符,所以「3 个汉字 = 12 个字符」。
补位符 = 与 URL 安全变体
标准 Base64 使用 + 和 /,并用 = 把长度补到 4 的倍数。这两个字符在 URL 里有特殊含义(+ 还会被当成空格),所以 JWT 一类场景改用 URL 安全变体:+ → -、/ → _,并去掉补位。切到「URL 安全」即可得到这种形式,而解码时两种写法都能识别。
和其他工具配合
JWT 的结构是 Base64Url(header).Base64Url(payload).签名,把中间那段贴进上面的解码框就能看到原始 JSON;需要把它展开成可读结构时,接着用JSON 在线工具。