使用 Java 和 Python 的 uuencoded 文件之间的区别

Difference between a uuencoded file using Java and Python

我必须将 Python 代码转换为 Java 代码,但我遇到了 uuencoding 问题。

Python函数:

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

Java函数:

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

这些函数的结果应该是相同的uuencoded文件,但实际上不是(它们几乎相同)。 Java uuencoded 文件比 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 %s\n' % ((mode&0777),name)) 

您应该将 os.linesep 系统变量设置为 '\r\n' 以便写入 CR+LF 换行符。