Ещё раз опишу проблему:
стягиваю с mail.ru письмо, вывожу поле "От кого:"
String from = InternetAddress.toString ( msg [ 6 ] .getFrom()) ;
System.out.println(from);
Получаю: =?KOI8-R?B?6NLZy8nOIOnHz9LY?= <
[email protected]>
Вместо: Вася Пупкин <
[email protected]>
dn2k4, не получилось, может просто я чёт не так понял.
Делал так: String str = new String(from.getBytes("cp1251")); и
String str = new String(from.getBytes(),"cp1251");
[Ответ]
+Greshnik+, не, эт я тебе чуть не то посоветовал =]
Для почтовых сообщений действует какой-то из RFC, согласно которому кодировка указывается прямо в строке адреса следующим образом (детали опущу):
1) "=?KOI8-R?B?" - кодировка koi8-r, закодировано base64 (если вместо "B" стоит "Q", то это не base64, а quotedprintable, ну кодировка ессно тоже другая может быть)
2) "6NLZy8nOIOnHz9LY" - это и есть закодированная строка
3) "?=" - конец закодированного, дальше чистый ASCII 7 бит
Итого надо что-то в духе:
// откусываешь часть строки
String from = "6NLZy8nOIOnHz9LY";
sun.misc.BASE64Decoder bs64dec = new sun.misc.BASE64Decoder();
String s = new String( bs64dec.decodeBuffer(from) );
String addr = new String( s.getBytes(), "KOI8-R");
System.out.println(addr);
И вместо ожидаемого "Васи Пупкина" на выходе получим "Хрыкин Игорь" =)
А лучше, конечно, какой-нить нормальный класс для работой с почтой найди...
[Ответ]