Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Кодирование темы в письме 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
6-1100941511
l.a_
2004-11-20 12:05
2005.02.06
Как узнать, что комп подклю чился к интернету?


1-1106406831
Polkan
2005-01-22 18:13
2005.02.06
проблема с try ... except


3-1105100023
Lucifer
2005-01-07 15:13
2005.02.06
Создание програмно псевданима DB MSAccess


14-1105772075
Чеширский_Кот
2005-01-15 09:54
2005.02.06
Жизненно важный софт


1-1106295507
Poha
2005-01-21 11:18
2005.02.06
RichEdit