接口传参要 Base64、JWT 里那段看不懂的串、图片想塞进 HTML 或 CSS……文本与 Base64 双向互转,中文和 Emoji 都不乱码,还能把图片直接转成 Data URI 复制走。
编码走 UTF-8,中文与 Emoji 都不会乱码;解码会自动补齐末尾的 = 填充。
请输入内容后点击「编码」或「解码」
img src、CSS 背景、接口传图、前端本地缓存
Base64 是一种把任意二进制数据编码成可安全传输的纯文本的方式:它用 64 个可打印字符(A–Z、a–z、0–9、+、/)表示原始字节,每 3 个字节编码成 4 个字符,体积因此膨胀约 33%。它不是加密,任何人拿到都能解回原文,别用它藏密码。
它的价值在于「绕开限制」:HTTP 头、URL 查询串、JSON 字段、XML 文本节点这些地方只适合放可打印字符,塞二进制就会出问题;邮件附件(MIME)几十年来一直是 Base64;前端把图片直接写成 data:image/png;base64,… 就能省掉一次请求,小图标、骨架屏占位图尤其常用。
另一个高频场景是 URL-safe Base64:标准 Base64 里的 + 在 URL 中会被解析成空格,/ 会和路径分隔符冲突,所以 JWT、OAuth 等场景改用 - 和 _ 替换,并省略末尾的 = 填充。本工具两种形态都支持,勾一下开关即可切换。
中文乱码是最常见的坑:btoa() 只接受 Latin-1 字符,直接对中文调用会抛异常。本工具先用 TextEncoder 把文本转成 UTF-8 字节再编码,解码时反向用 TextDecoder 还原,因此中文、日文、Emoji 都能正确往返。所有计算都在浏览器本地完成,内容不会上传。
+ → -、/ → _、去掉末尾 =;解码时同样勾选即可还原。= 或 ==,那是填充符号,用来把长度补齐到 4 的倍数,解码前自动补上即可。+ 放进 URL 查询串会被解成空格,这就是需要 URL-safe 模式的根本原因。url(),并且字符串里的 # 需要转义成 %23。= 填充满,因此实际膨胀率略高于 1/3。btoa() 只接受 Latin-1 范围内的字符,直接传入中文会抛 InvalidCharacterError;有人先用 escape() 转一道,就会得到乱码。正确做法是先 TextEncoder 编码成 UTF-8 字节数组再 Base64,解码时反之。本工具就是这么实现的。+ 换成 -、/ 换成 _、省略末尾的 = 填充。原因是 + 在 URL 查询串里会被解析成空格,/ 会与路径分隔冲突。JWT、OAuth 的 token 用的都是 URL-safe 变体,代码里一般叫 base64url。<img src="data:image/png;base64,…"> 就行,浏览器不会再发额外请求。但要注意:体积比原图大约 1/3,且无法被单独缓存,大图会拖慢首屏并影响 SEO。建议只对小图标、纯色占位图使用,且优先 SVG。TextEncoder / TextDecoder 与 btoa / atob,图片读取使用 FileReader,全部在本地完成,没有任何网络请求。处理内部接口数据、含敏感字段的配置时也可以放心使用。审核通过后就会展示在留言板上,稍安勿躁~
还没有留言,来抢沙发吧!