Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Имя отправителя письма


Автор: Lib 17.1.2008, 19:11
Как получить имя отправителя письма в UNICODE-строке?

Код

FServer: TIdNNTP;
mes : TidMessage;
str : string;

...
   for I:=FServer.MsgLow to FServer.MsgHigh do
   begin
    FServer.GetHeader(i,mes);
    ...
    str := mes.From.Text;
   end;




В mes.From.Text например вот такие имекна отправителей: =?Utf-8?B?QXJvbg==?= или =?gb2312?B?wszJqw==?=
Как это увидеть в читаемом виде? Есть ли готовые решения?
Спасибо.

Автор: Lib 18.1.2008, 13:01
Товарищи! Помогите убогому!

Автор: Snowy 18.1.2008, 13:37
Готовых решений не знаю.
По крайней мере универсальных.

А суть строки такова:
=?XXXX?C?SSSSS?=
Если строка заключена в =? ?= - это кодированная строка.
XXX - это кодировка текста.
C - метод кодирования. B - Base64, Q - Quoted Printable
SSSSS - сам кодированный текст.

То есть в случае =?Utf-8?B?QXJvbg==?= мы видим, что строка в кодировке utf-8 закодирована в Base64.
Берём строку, декодируем её из Base-64, затем конвертим из Utf-8 в нужную кодировку.

Автор: Lib 18.1.2008, 19:28
Спасибо, сдвинулся с мёртвой точки.

Автор: Lib 18.1.2008, 19:48
Теперь бы ещё найти декодер из GB2312 куда-нибудь в читаемое, в USC2 например. И как её потом отобразить?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)