![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кодировка и IdPOP3 [D7, WinXP]
Yegorchic © (2006-04-03 18:37:00)Здравствуйте! У меня такая проблема: когда я читаю "subject" какого-то письмы (IdMessage) полученного через IdPOP3, то оно у меня в такого содержания: "=?koi8-r?". Что надо сделать, что бы получить норамльную "тему". Тоже самое и с именем отправителя.
sicilla (2006-04-10 19:14:00) [1]Ладно. тут меняы приперло, и я сам врубился. Вот код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TConvertChars = array [ #128..#255] of char;
const
Koi_WinChars: TConvertChars = (
#128,#129,#130,#131,#132,#133,#134,#135,#136,#137,#138,#139,#140,#141,#142,#143,
#144,#145,#146,#147,#148,#149,#150,#151,#152,#153,#218,#155,#176,#157,#183,#159,
#160,#161,#162,#184,#186,#165,#166,#191,#168,#169,#170,#171,#172,#173,#174,#175,
#156,#177,#178,#168,#170,#181,#182,#175,#184,#185,#186,#187,#188,#189,#190,#185,
#254,#224,#225,#246,#228,#229,#244,#227,#245,#232,#233,#234,#235,#236,#237,#238,
#239,#255,#240,#241,#242,#243,#230,#226,#252,#251,#231,#248,#253,#249,#247,#250,
#222,#192,#193,#214,#196,#197,#212,#195,#213,#200,#201,#202,#203,#204,#205,#206,
#207,#223,#208,#209,#210,#211,#198,#194,#220,#219,#199,#216,#221,#217,#215,#218) ;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Koi_winConvert(const St: string): string;
var
i: integer;
begin
Result:=St;
for i:=1 to Length(St) do
if St[i]>#127 then
Result[i]:=Koi_WinChars[St[i]];
end;
procedure TForm1.Button2Click(Sender: TObject);
var S: string;
i, ui: integer;
t: TStringList;
begin
t := TStringList.create;
t.text := stringReplace('=?koi8-r?Q?=ED=CF=C4=CE=D9=C5=20=CF=C2=CF=C9=20=C4=CC=D1=20?=', '=', #13#10, [rfReplaceAll]);
for i := 2 to t.Count-2 do
begin
ui := StrToInt('$' + t[i]);
S := S + chr(ui);
end;
label2.Caption := S;
label3.Caption := Koi_winConvert(S);
t.free;
end;
end.
Cool!!!
sicilla (2006-04-10 18:03:00) [2]Видимо Вы чиатать не умеете:
Dmitrij_K (04.04.06 20:48) [6]
А что можно делать неправильно?
см.
sss := DecodeHeader('=?koi8-r?Q?=ED=CF=C4=CE=D9=C5=20=CF=C2=CF=C9=20=C4=CC=D1=20?=');
sss = 'нПДОЩЕ ПВПЙ ДМС';
Вот.
А чтобы в нормальную (windows) кодировку перевести надо еще раз преобразовать! Если нужна функция, могу на мыло послать.
<Цитата>
Yegorchic © (04.04.06 21:35) [7]
Пришлите пожалуйста!
А то я декодирую, а строка совершенно не меняется!
У меня вот тоже не меняется :(
Ketmar (2006-04-09 19:20:00) [3]ага. типа так сложно KOI8-R-кодек сделать. два массива по 128 байтиков.
Sicilla (2006-04-09 13:02:00) [4]Dmitrij_K, написал бы так, тоже нужно
Yegorchic (2006-04-04 21:35:00) [5]Пришлите пожалуйста!
А то я декодирую, а строка совершенно не меняется!
Dmitrij_K (2006-04-04 20:48:00) [6]А что можно делать неправильно?
см.
sss := DecodeHeader('=?koi8-r?Q?=ED=CF=C4=CE=D9=C5=20=CF=C2=CF=C9=20=C4=CC=D1=20?=');
sss = 'нПДОЩЕ ПВПЙ ДМС';
Вот.
А чтобы в нормальную (windows) кодировку перевести надо еще раз преобразовать! Если нужна функция, могу на мыло послать.
Yegorchic (2006-04-04 17:49:00) [7]Только что-то он не раскодируется никак... или я что-то не так делаю...
Yegorchic (2006-04-04 15:24:00) [8]Спасибо!
Dmitrij_K (2006-04-04 07:48:00) [9]В Indy 10 - IdCoderHeader.pas
Yegorchic (2006-04-03 23:20:00) [10]Извините, может вопрос будет глупым, но откуда эту функцию взять?
Dmitrij_K (2006-04-03 22:08:00) [11]DecodeHeader()