复制粘贴:魔鬼在首尾
复制原文时,首尾多余的空格和换行会被一起编码,导致结果和预期不一致。粘贴前先全选检查一遍,删掉看不见的空白。
复制结果时则要保证完整,特别是末尾的 = 填充符,漏掉它对方可能解码失败。全选后复制比手动拖选可靠得多,别省这一步。
字符集:两端必须统一
中文编码前先确认字符集,默认 UTF-8 在绝大多数场景是对的。只有当接收方明确要求其他字符集时才切换。
最稳妥的做法是和接收方约定好:「我们统一用 UTF-8」。口头约定一次,省去无数次乱码排查。
长文本:分段检查更靠谱
编码很长的文本时,建议分段处理、逐段核对。一次性处理几万字,出错了很难定位是哪一段的问题。
核对的方法是抽样解码:随机挑几段结果解码回来,和原文比对一致,就基本可以放心。
交付前:做一次完整验证
把结果交给对方之前,自己先完整解码验证一遍,确认还原出的内容和原文一字不差,这是最后一道保险,千万别省。
如果对方是程序接口,顺手确认一下对方是否接受标准 Base64,还是需要 URL 安全变体,提前问一句能省很多返工。
常见问题
为什么同样的文本每次编码结果都一样?
这是正常的。Base64 是确定性编码,同样输入永远得到同样输出。如果两次结果不一样,说明输入其实不一样,检查首尾空白。
结果里能加换行吗?
标准允许每 76 个字符换行,但很多严格的解码器不接受。给程序用时给单行版本,给人看时换行更易读,看对象决定。
编码中文和英文有区别吗?
原理一样,区别在于中文先按字符集转成多字节再编码。只要两端字符集一致,中文和英文都不会出问题。
怎么快速验证结果正确?
自己解码一遍,和原文逐字比对。这是最直接的办法,花十秒钟,能拦住绝大多数低级错误。