邮件附件转文本
甲方发来一份 .docx 的验收清单,要求把里面的表格数据贴进在线工单系统。直接复制,格式全乱;手动重敲,50 行数据至少半小时。把文档转成 Base64 字符串后,用在线解码器还原为纯文本,表格结构丢失但每行数据完整可读,复制粘贴 2 分钟搞定,且不经过任何第三方服务器。
输出过大,下方仅显示前 2MB —— 复制 / 下载均为完整内容
从日志里复制一段乱码般的Base64字符串,粘贴进来,瞬间还原成可读的原文;或者把一张小图片拖进来,直接转成内联的data:URL嵌入HTML。这个工具只做一件事:在Base64与原始数据之间双向转换,支持文本、文件、图片,并提供URL-safe选项避开路径歧义。所有转换都在浏览器本地完成,文件不会离开设备——调试接口、快速编码小资源、验证收到的Base串是否合法,都够用。
甲方发来一份 .docx 的验收清单,要求把里面的表格数据贴进在线工单系统。直接复制,格式全乱;手动重敲,50 行数据至少半小时。把文档转成 Base64 字符串后,用在线解码器还原为纯文本,表格结构丢失但每行数据完整可读,复制粘贴 2 分钟搞定,且不经过任何第三方服务器。
后端接口要求上传图片文件,但 Postman 里 body 只能用 raw 文本格式。用本工具把本地 2.3MB 的 JPG 截图转为 Base64 字符串,直接粘贴进请求体。参数名写 image_data,值贴那串 3 万字符的文本,点击发送。服务端解码还原图片,避免 multipart/form-data 的边界解析错误。
给同事分享一个包含换行符和引号的 JSON 配置,直接贴到微信消息里,对方复制后 JSON 解析总报错。把 JSON 用 URL-safe 模式转成 Base64,字符集仅含 A-Za-z0-9 和 -_,不含任何换行或引号。对方拿到后解码还原,一次解析通过。
前端页面需要显示一个 16×16 的 favicon.ico,但部署环境不允许上传额外静态文件。把图标文件用本工具转为 Base64 字符串,直接嵌入 HTML 的 link 标签 href 属性里:data:image/x-icon;base64,AAAA...。页面加载不产生额外 HTTP 请求,图标即刻显示。
用户注册时上传头像,数据库字段是 TEXT 类型,不能直接存二进制。在注册流程中,后端收到图片后调用本工具(或前端上传前预处理)转为 Base64 字符串存入数据库。查询用户信息时,前端直接拿这个字符串设给 img 标签的 src,省去文件存储和 CDN 开销。
| 输入 | 输出 | 说明 |
|---|---|---|
| Hello, 世界! | SGVsbG8sIOS4lueVjO+8gQ== | 常规:中英文混编,验证 UTF-8 编码下的 Base64 标准输出,末尾带 = 填充符 |
| SGVsbG8sIOS4lueVjO+8gQ== | Hello, 世界! | 常规:解码刚才的编码结果,验证双向转换一致性 |
| (空字符串) | (空字符串) | 边界:空输入,验证工具不会报错或输出非空结果 |
| a | YQ== | 边界:单字节输入,Base64 编码结果长度为 4(含填充),验证填充规则 |
| ab | YWI= | 边界:双字节输入,编码结果长度为 4(含 1 个填充符),验证填充规则 |
| abc | YWJj | 边界:三字节输入,编码结果长度正好为 4(无填充),验证无填充时的输出 |
| SGVsbG8gV29ybGQh | Hello World! | 易错:输入不含 = 填充符的标准 Base64 字符串,验证工具能自动补全或正确解码 |
| SGVsbG8gV29ybGQhIQ== | Hello World!! | 易错:输入末尾有双等号填充,验证解码后双感叹号是否完整还原 |
1.中文 Base64 编码后直接用于 URL 参数
编码后字符串:5Lit5paH5a2X5rOV(含 + 和 /)使用 URL-safe 选项,输出:5Lit5paH5a2X5rOV(+ 变 -,/ 变 _,= 省略)标准 Base64 包含 +、/、=,在 URL 中会被解析为空格或路径分隔符,导致参数截断。URL-safe 变体(RFC 4648 §5)替换为 -、_ 并去除填充 =。
2.把 Base64 当加密用,明文直接编码
将密码 'abc123' 编码为 'YWJjMTIz' 后存储Base64 仅用于数据传输,密码应使用 bcrypt/argon2 哈希后存储Base64 是编码(可逆),不是加密(需密钥)。编码后的字符串用在线工具一秒解码,无任何保密性。
3.图片转 Base64 时遗漏 data URI 前缀
直接粘贴 <img src='iVBORw0KGgo...'> 到 HTML<img src='data:image/png;base64,iVBORw0KGgo...'>浏览器需要 data: 协议头(含 MIME 类型)才能识别 Base64 为图片,否则视为相对路径。MIME 类型必须与实际文件格式一致(如 image/jpeg)。
4.解码时混入多余空白或换行
解码字符串包含空格或换行:'SGVsbG8gV29ybGQ= '解码前先去除所有空白字符:'SGVsbG8gV29ybGQ='Base64 规范(RFC 4648 §3.1)允许解码器忽略空白,但部分实现(如某些后端库)会因非法字符抛出异常。安全做法是解码前 strip()。
5.编码二进制文件时用文本模式读取
Python 中 open('photo.png', 'r') 读取后编码open('photo.png', 'rb') 以二进制模式读取文本模式会进行换行符转换(Windows 下 变 ),破坏文件完整性。Base64 编码的输入必须是原始字节流。
6.手动补全 Base64 填充等号数量错误
解码 'aGVsbG8'(缺少 1 个 =)解码 'aGVsbG8=' 或使用自动填充的解码器Base64 编码长度必须是 4 的倍数,不足时用 = 填充。缺少填充会导致解码错误或数据截断。多数现代解码器自动补全,但手动拼接时需注意。
7.将 Base64 解码结果直接当文本显示
解码图片 Base64 后直接 console.log() 输出乱码解码后得到的是二进制数据,需按原格式处理(如创建 Blob 或写入文件)Base64 解码返回的是字节序列,非文本。直接打印会按 UTF-8 解释字节,产生乱码。图片、压缩包等二进制文件必须通过 Blob/File API 处理。
Base64 编码:C = Base64(M),其中 M 为原始字节序列,C 为编码后的 ASCII 字符串
M原始数据,字节序列C编码结果,ASCII 字符串原始文本 "Man" 的 ASCII 字节为 77、97、110(二进制 01001101、01100001、01101110)。按 6 位分组:010011、010110、000101、101110,对应十进制 19、22、5、46,查 Base64 索引表得 T、W、F、u,编码结果为 "TWFu"。
图片转 Base64 后体积会膨胀约 33%,因为每 3 字节二进制数据会被编码成 4 个 ASCII 字符。这对小图标(几 KB)影响不大,但一张 100KB 的 JPG 转完变成约 133KB 的字符串,直接嵌在 HTML/CSS 里会增加页面初始下载量。浏览器无法像普通图片文件那样做渐进式加载或单独缓存,每次访问都得重新下载这段字符串。建议只对 10KB 以下的小图标、装饰性元素用 Base64 内嵌,大图还是用文件链接更合理。
那不是乱码,是编码后的文本。要恢复,把整段文本复制出来,找一个支持「Base64 解码为文件」的工具(本工具也有这个功能),粘贴进去,点击解码,就能下载回原文件。关键点:编码时是什么格式(比如 PNG 图片),解码后保存时也要用相同扩展名。如果解码后打不开,检查一下复制时有没有漏掉开头的 data:image/png;base64, 前缀——有些工具只认纯编码内容,不带前缀。
等号是填充符。Base64 编码按 3 字节一组处理,如果原始数据长度不是 3 的倍数,最后一组会不足 3 字节,就用 = 或 == 补足到 4 个字符,这样解码器能知道最后一组实际有效数据是 1 还是 2 字节。去掉等号后,大多数标准解码器会报错或解码出错误数据。不过本工具提供了「URL-safe」选项,它会把 + 变 -、/ 变 _,并去掉末尾的 =,生成的是 RFC 4648 第 5 节定义的「base64url」格式,这种格式解码前需要手动补回等号,或者用支持无填充解码的库。
问题出在换行符和编码上。Windows 记事本保存的 .txt 默认是 GBK 编码,每行结尾是回车+换行(CR+LF,即 \r\n);而 Linux/macOS 上常用 UTF-8 编码,换行只有 LF(\n)。Base64 是对原始二进制逐字节编码的,同一段文字用不同编码保存,二进制完全不同,Base64 结果自然不同。如果你想让结果跨平台一致,转码前先用 UTF-8 编码保存文本文件,或者在本工具里直接粘贴文本(不要上传文件),工具会按 UTF-8 处理文本内容。
Base64 是一种编码方案,不是加密算法。它只是把二进制数据转换成可打印的 ASCII 字符,方便在文本协议(如 HTTP、JSON)中传输。任何拿到编码字符串的人,用标准 Base64 解码器都能一秒还原出原始内容,不需要密钥。如果内容需要保密,应该用 AES、RSA 等加密算法先加密,再把加密后的二进制结果做 Base64 编码。简单说:Base64 防肉眼不防破解,别拿它当密码用。
这个前缀叫 Data URI scheme,告诉浏览器后面这段字符串是什么类型的数据。比如 data:image/png;base64, 表示后面是 PNG 格式图片的 Base64 编码;data:application/pdf;base64, 表示是 PDF 文件。浏览器遇到这个前缀,能直接解析并渲染出图片或提供文件下载,不需要发起网络请求。如果你只是想把编码存起来或传给后端,可以只取逗号后面的纯编码部分,节省存储空间。本工具结果区默认只展示纯编码,需要带前缀的可以手动拼接。
标准 Base64 编码字符集包含 + 和 /,这两个字符在 URL 中有特殊含义(+ 代表空格,/ 是路径分隔符)。如果把标准 Base64 字符串直接放在 URL 参数里(如 ?token=abc+def/ghi),服务器解析时会出错。URL-safe 模式把 + 替换成 -,把 / 替换成 _,并去掉末尾的 =,生成的字符串可以安全地放在 URL 的查询参数或路径中。如果你要把编码结果放在 GET 请求的参数里、或者作为 RESTful API 的路径段,一定要勾上;如果只是本地使用或放在 POST 请求体里,不需要勾。
常见原因有三个。第一:编码字符串里混入了换行符或空格。标准 Base64 不应该有换行,但有些工具或邮件系统会每 76 个字符自动换行,粘贴前要先把换行去掉。第二:字符串长度不是 4 的倍数。Base64 编码结果长度一定是 4 的倍数,如果复制时漏了字符或多了字符,解码器会报错。第三:包含了非法字符。标准 Base64 只包含 A-Z、a-z、0-9、+、/ 和末尾的 =,如果看到 . - _ 等字符,说明是 URL-safe 格式,要用对应的解码模式。本工具输入框会自动过滤常见干扰字符,如果还是报错,建议重新复制完整编码,检查首尾有没有多余内容。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。