以下是一个简单的Java程序,用于对quoted-printable编码进行解码:
import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; public class QuotedPrintableDecoder {public static void main(String[] args) {
String encodedString = “Hello=20World=21”;
String decodedString = decodeQuotedPrintable(encodedString);
System.out.println(decodedString);
}
public static String decodeQuotedPrintable(String encodedString) {
try {
byte[] encodedBytes = encodedString.getBytes(StandardCharsets.US_ASCII);
StringBuilder decodedString = new StringBuilder();
int i = 0;
while (i < encodedBytes.length) {
if (encodedBytes[i] == '=') {
int hex1 = Character.digit(encodedBytes[i + 1], 16);
int hex2 = Character.digit(encodedBytes[i + 2], 16);
if (hex1 != -1 && hex2 != -1) {
byte decodedByte = (byte) ((hex1 << 4) + hex2);
decodedString.append((char) decodedByte);
i += 3;
} else {
decodedString.append('=');
i++;
}
} else {
decodedString.append((char) encodedBytes[i]);
i++;
}
}
return decodedString.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
} }
在上面的代码中,我们定义了一个decodeQuotedPrintable
方法,它接受一个quoted-printable编码的字符串作为输入,并返回解码后的字符串。在该方法中,我们首先将输入字符串转换为字节数组,然后逐个解码字节,并将解码后的字符追加到StringBuilder
对象中。如果遇到=HEX
形式的编码,我们将其转换为对应的字节,并将该字节添加到解码字符串中。最后,我们将StringBuilder
对象转换为字符串,并返回解码结果。
在main
方法中,我们提供了一个encodedString示例,并调用decodeQuotedPrintable
方法进行解码。解码结果将被打印到控制台上。