编码与安全指南
Base64 与 UTF-8:文本、二进制和乱码排查
编码前先把文字转为字节,解码后判断 UTF-8 文本与二进制数据。
文本先确定字符编码
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 可由任何人还原,传输压缩前体积大约增加三分之一,应为协议兼容使用,不能当加密或压缩。