以下是一個簡單的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
方法進行解碼。解碼結果將被打印到控制臺上。