Как декодировать строку во время выполнения в Java? - PullRequest
0 голосов
/ 22 января 2010

Я создаю почтовый клиент, когда я получаю письма от сервера blackberry, он отправляет имя файла как "=? Utf-8? B? AnBlZ2F0dGFjaG1lbnQuSlBFRw ==? =", Но исходное имя файла было "jpegattachment.JPEG", и иногда Я получаю простой текст при получении от других почтовых серверов. Поэтому здесь моя проблема в том, что я могу получить строку, которая может кодироваться или не кодироваться.

Есть ли способ, я могу получить кодировку строки и декодировать ее в простой текст.

Либо входная строка имеет вид "=? Utf-8? B? AnBlZ2F0dGFjaG1lbnQuSlBFRw ==? =", Либо "jpegattachment.JPEG" должна быть "jpegattachment.JPEG".

Любая идея ??

Ответы [ 2 ]

1 голос
/ 22 января 2010

Это MIME-кодировка. Несмотря на то, что Base64 является наиболее популярным, он может использовать другие кодировки, такие как Quoted-printable, binary и т. Д. Поэтому для декодирования вам следует использовать существующую библиотеку. Любая почтовая программа будет иметь встроенный декодер.

Вы можете использовать decodeWord() из Java Mail,

http://java.sun.com/products/javamail/javadocs/javax/mail/internet/MimeUtility.html#decodeWord(java.lang.String)

Попробуйте deocdeText(), если хотите оставить один простой текст.

1 голос
/ 22 января 2010

Да, это: anBlZ2F0dGFjaG1lbnQuSlBFRw== в кодировке base64 jpegattachment.JPEG. Так что просто расшифруйте его с помощью base64.

Ответили как, здесь: Декодирование данных Base64 в Java

...