Ruby中Base64.encode64为何会在编码字符串末尾添加换行符?
为什么Rails中Base64.encode64会在编码结果末尾添加换行符?
Base64.encode64 遵循 RFC 2045 标准实现,这个标准最初是为邮件传输场景设计的——早期邮件系统对单行文本长度有严格限制(不能超过76个字符),因此该方法会自动给编码后的文本做行分割,每行最多76个字符,并且在每一行(包括最后一行)末尾添加换行符。哪怕原始字符串编码后长度远小于76,它也会默认补上这个换行符。
而你用到的 Base64.strict_encode64 遵循 RFC 4648 的严格规范,它不会做任何自动换行处理,编码结果是连续的纯Base64字符串,没有额外的换行符,刚好适配那些对输入格式要求严格的第三方系统。
代码示例对比
- 带换行的编码:
Base64.encode64("No way") # output: "Tm8gd2F5\n"
- 无换行的严格编码:
Base64.strict_encode64("No way") # output: "Tm8gd2F5"
内容的提问来源于stack exchange,提问作者channa ly
相关产品推荐
相关产品推荐

