Java:以引用打印形式对字符串进行编码

Hor*_*ren 2 java mime jakarta-mail quoted-printable

我正在寻找一种quoted-printable在 Java 中对字符串进行编码的方法,就像 php 的本机quoted_printable_encode()函数一样。

我尝试过使用 JavaMails 的 MimeUtility 库。但我无法让该encode(java.io.OutputStream os, java.lang.String encoding)方法工作,因为它采用 OutputStream 作为输入而不是字符串(我使用该函数getBytes()来转换字符串)并输出一些我无法返回到字符串的内容(我是一个 Java 菜鸟:)

谁能告诉我如何编写一个包装器,将字符串转换为 OutputStream 并在编码后将结果输出为字符串?

Jon*_*oni 6

要使用此MimeUtility方法,您必须创建一个ByteArrayOutputStream它将累积写入其中的字节,然后您可以恢复这些字节。例如,对字符串进行编码original:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream encodedOut = MimeUtility.encode(baos, "quoted-printable");
encodedOut.write(original.getBytes());
String encoded = baos.toString();
Run Code Online (Sandbox Code Playgroud)

同一类中的函数encodeText可以处理字符串,但它会产生 Q 编码,这与quoted-printable 类似,但不完全相同:

String encoded = MimeUtility.encodeText(original, null, "Q");
Run Code Online (Sandbox Code Playgroud)