我必须将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 换行符。