使用 Java 和 Python 的 uuen 编码文件之间的区别



我必须将Python代码转换为Java代码,并且我在uuencoding方面遇到了问题。

蟒蛇函数:

import uu
uu.encode("input_file", "output_file")

Java函数:

MimeUtility.encode(new FileOutputStream(output_file_path), "uuencode");
stream.write(Files.readAllBytes(input_file));

这些函数的结果应该是相同的 uuencoding 文件,但事实并非如此(它们几乎相同(。Java uuen编码文件比Python大2个字节。

问题出在哪里?

编辑: 在名称标签(<begin><mode><name>(之后添加一个额外的字节,在结束标签(<end>(之后添加一个字节。

这是一个换行问题。

MIME一直被定义为使用CR + LF作为终止符,但如果使用原始编码(如Python(,则在Linux上仅使用LF。见RFC2045

# https://github.com/python/cpython/blob/2.7/Lib/uu.py
79         out_file.write('begin %o %sn' % ((mode&0777),name)) 

应将os.linesep系统变量设置为'rn',以便写入 CR+LF 换行符。

最新更新