编码与安全指南

Base64 与 UTF-8:文本、二进制和乱码排查

编码前先把文字转为字节,解码后判断 UTF-8 文本与二进制数据。

Nav Tools ·

文本先确定字符编码

Base64 转换字节,UTF-8 决定文本对应哪些字节,两者解决不同问题。

用已知短 Unicode 文本检查处理链,btoa 接收二进制字符串,不能直接接受任意 Unicode。

Text:   中文
UTF-8:  e4 b8 ad e6 96 87
Base64: 5Lit5paH

先还原字节再解释内容

合法 Base64 可以表示图片、压缩数据或文字,解码成功不会自动确定文件格式或字符集。

先看字节和来源约定,再选文本解码;替换字符可能是解释方式错误,而非 Base64 损坏。

明确去掉格式包装

data URL 在载荷前包含媒体类型和编码标记,完整 data URL 不是裸 Base64 字符串。

图片流程使用图片 data URL 工具;处理裸编码时,应在确认格式后只取逗号后面的载荷。

data:image/png;base64,<payload>
Prefix: data:image/png;base64,
Payload: only the bytes represented after the comma

比较原始字节

文本往返需同时保留字符和约定编码,二进制往返应比较原始字节长度或哈希。

Base64 可由任何人还原,传输压缩前体积大约增加三分之一,应为协议兼容使用,不能当加密或压缩。

参考资料

← 编码与安全指南