Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизКодирование темы в письме e-mail Найти похожие ветки
← →
Sicilla © (2005-01-22 12:38) [0]Добрый день! В начале каждого письма e-mail есть header. В данном случае такой:
Subject: =?Windows-1251?B?0OXq6+Ds4Dogz87Ew87SzsLIzCDB29HS0M4gyCDKwNfF0dLCxc3NziDKIMLb0dLA?=
=?Windows-1251?B?wsrFIMggz9DOzM7AytbI38whISEh?=
MIME-Version: 1.0
Content-Type: text/plain; charset=Windows-1251
Content-Transfer-Encoding: 8bit
Как я понимаю subject закодирован 8bit кодом. Как мне его можно раскодировать? Заранее спасибо
← →
palva © (2005-01-22 12:48) [1]> Как я понимаю subject закодирован 8bit кодом. Как мне его можно раскодировать? Заранее спасибо
Нет. "Content-Transfer-Encoding: 8bit" относится к тому, что будет дальше, а Subject закодирован Base64. Наверно, тип кодировки указывает буква B между вопросительными знаками. Но здесь я не уверен.
← →
Anatoly Podgoretsky © (2005-01-22 13:07) [2]Кодировка 1251, упаковка Base64
← →
Style © (2005-01-22 13:45) [3]
> упаковка Base64
Я бы сказал, что это тоже кодировка :) В моем понимании слово упаковка - это уменьшение размера, а ни его увеличение :)))
← →
Anatoly Podgoretsky © (2005-01-22 13:53) [4]Style © (22.01.05 13:45) [3]
Это транспортная упаковка, чтобы данные могли проходить через 7 битные каналы. Кодировка при этом не меняется. И то также и не шифровка.
← →
Sicilla © (2005-01-23 19:52) [5]Если subject как base64, то
const
Codes64 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
function Encode64(S: string): string;
var
i: Integer;
a: Integer;
x: Integer;
b: Integer;
begin
Result := "";
a := 0;
b := 0;
for i := 1 to Length(s) do
begin
x := Ord(s[i]);
b := b * 256 + x;
a := a + 8;
while a >= 6 do
begin
a := a - 6;
x := b div (1 shl a);
b := b mod (1 shl a);
Result := Result + Codes64[x + 1];
end;
end;
if a > 0 then
begin
x := b shl (6 - a);
Result := Result + Codes64[x + 1];
end;
end;
function Decode64(S: string): string;
var
i: Integer;
a: Integer;
x: Integer;
b: Integer;
begin
Result := "";
a := 0;
b := 0;
for i := 1 to Length(s) do
begin
x := Pos(s[i], codes64) - 1;
if x >= 0 then
begin
b := b * 64 + x;
a := a + 6;
if a >= 8 then
begin
a := a - 8;
x := b shr a;
b := b mod (1 shl a);
x := x mod 256;
Result := Result + chr(x);
end;
end
else
Exit;
end;
end;
почему-то не работает.
← →
Anatoly Podgoretsky © (2005-01-23 19:59) [6]subject это не base64.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c