Как декодировать строку во время выполнения в Java?

StackOverflow https://stackoverflow.com/questions/2116307

  •  22-09-2019
  •  | 
  •  

Вопрос

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

Есть ли способ получить кодировку строки и декодировать ее в обычный текст.

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

Есть идеи??

Это было полезно?

Решение

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

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

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

Пытаться deocdeText() если вы хотите, оставьте простой текст.

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top