У меня есть текст с quoted-printables .Вот пример такого текста (из статьи в Википедии ):
Если вы верите, что истина = 3Dbeauty, то, безусловно, математика является наиболеепрекрасная ветвь философии.
Я ищу класс Java, который декодирует закодированную форму в символы, например, = 20 в пробел.
ОБНОВЛЕНИЕ: Благодаря Elite Gentleman, я знаю, что мне нужно использовать QuotedPrintableCodec:
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.net.QuotedPrintableCodec;
import org.junit.Test;
public class QuotedPrintableCodecTest {
private static final String TXT = "If you believe that truth=3Dbeauty, then surely=20=mathematics is the most beautiful branch of philosophy.";
@Test
public void processSimpleText() throws DecoderException
{
QuotedPrintableCodec.decodeQuotedPrintable( TXT.getBytes() );
}
}
Однако я продолжаю получать следующее исключение:
org.apache.commons.codec.DecoderException: Invalid URL encoding: not a valid digit (radix 16): 109
at org.apache.commons.codec.net.Utils.digit16(Utils.java:44)
at org.apache.commons.codec.net.QuotedPrintableCodec.decodeQuotedPrintable(QuotedPrintableCodec.java:186)
Что я делаю не так?
ОБНОВЛЕНИЕ 2: Я нашел этот вопрос @ SO и узнал о MimeUtility :
import javax.mail.MessagingException;
import javax.mail.internet.MimeUtility;
public class QuotedPrintableCodecTest {
private static final String TXT = "If you believe that truth=3Dbeauty, then surely=20= mathematics is the most beautiful branch of philosophy.";
@Test
public void processSimpleText() throws MessagingException, IOException
{
InputStream is = new ByteArrayInputStream(TXT.getBytes());
BufferedReader br = new BufferedReader ( new InputStreamReader( MimeUtility.decode(is, "quoted-printable") ));
StringWriter writer = new StringWriter();
String line;
while( (line = br.readLine() ) != null )
{
writer.append(line);
}
System.out.println("INPUT: " + TXT);
System.out.println("OUTPUT: " + writer.toString() );
}
}
Однако вывод все еще не идеален, этосодержит '=':
INPUT: If you believe that truth=3Dbeauty, then surely=20= mathematics is the most beautiful branch of philosophy.
OUTPUT: If you believe that truth=beauty, then surely = mathematics is the most beautiful branch of philosophy.
Что я делаю не так?