Главная страница
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.054 c
14-1106092204
noone_____
2005-01-19 02:50
2005.02.06
inttostr in cpp


1-1106438788
FFFFF
2005-01-23 03:06
2005.02.06
Как запретить внесение изменений Items в ComboBox?


3-1104821945
Нуждающийся в помощи
2005-01-04 09:59
2005.02.06
Использование IB в глобальных сетях


1-1106234860
denis24
2005-01-20 18:27
2005.02.06
MessageDlg в потоке


14-1105903451
Hypercube
2005-01-16 22:24
2005.02.06
Citizen SRP-285II