Как декодировать строку во время выполнения в Java?
Вопрос
Я создаю почтовый клиент, когда я получаю электронные письма с сервера Blackberry, он отправляет имя файла как "=?utf-8?B?anBlZ2F0dGFjaG1lbnQuSlBFRw==?=", но исходное имя файла было "jpegattachment.JPEG", и иногда я получаю обычный текст, когда я получаю от других почтовых серверов.Итак, моя проблема в том, что я могу получить строку, которая может быть закодирована, а может и не быть.
Есть ли способ получить кодировку строки и декодировать ее в обычный текст.
Либо входная строка имеет вид "=?utf-8?B?anBlZ2F0dGFjaG1lbnQuSlBFRw==?=", либо выходная строка "jpegattachment.JPEG" должна быть "jpegattachment.JPEG".
Есть идеи??
Решение
Это MIME-кодирование.Несмотря на то, что Base64 является наиболее популярным, он может использовать другие кодировки, такие как Quoted-printable, двоичная и т. д.Поэтому для декодирования вам следует использовать существующую библиотеку.Любая почтовая программа будет иметь встроенный декодер.
Вы можете использовать decodeWord()
из Java Mail,
Пытаться deocdeText()
если вы хотите, оставьте простой текст.
Другие советы
Да, это: anBlZ2F0dGFjaG1lbnQuSlBFRw==
имеет кодировку Base64 jpegattachment.JPEG
.Так что просто декодируйте его с помощью base64.
Ответил как, здесь:Декодирование данных Base64 в Java