0

我必须将 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>)后添加一个字节

4

1 回答 1

2

这是一个换行问题。

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 换行符。

于 2019-08-29T13:53:18.590 回答