| 
| 
 | Вопрос # 4 005/ вопрос открыт / | 
 |  Здравствуйте, эксперты! Пожалуйста помогите привести к нормальному виду строчку =?utf-8?q?EA_=D0=9D=D0=BE=D0=B2=D0=BE=D1=81=D1=82=D0=BD=D0=B0=D1=8F_=D0?= =?utf-8?q?=A0=D0=B0=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0_=D0=90=D0=BF=D1?= =?utf-8?q?=80=D0=B5=D0=BB=D1=8C_2010?=Не могу разобраться чё с ней нужно делать... Знаю что кодировка utf-8 пробывал кодировать UTFtoANSI не катит... подскажите пожалуйста! Заранее спасибо!
 
|  |   Вопрос задал: eclipse (статус: Посетитель)Вопрос отправлен: 9 апреля 2010, 10:55
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, eclipse!Это классическое кодирование текста для почты. Декодировать можно. о стандартных алгоритмах не помню, но кто мешает поупражняться ручками?
 вначале с строки вырезаем кусочек =?utf-8?q? - это указание кодировки.
 Дальше, всё, что до следующей метки ?= вырезаем в отдельную переменную - будем его декодировать. Идея такая если текущий символ "=", то копируем следующие два символа, рассматриваем их как хекс байта и складываем в массив. А потом к полученному массиву применяем преобразование с utf-8 в свою кодировку. Где то так
 
 i := 1;
s := '=80=D0=B5=D0=BB=D1=8C_2010';
r := ''; //AnsiString!
while i < length(s) do begin
if s[i] = '=' then begin
  r := r + char(StrToInt('$'+copy(s, i+1, 2)));
  i := i+2;
end
else
  r := r + s[i];
i:=i+1;
end;
end;
UTFtoANSI(r);коментарии:)- этот код можно заметно улучшить, это только идея
 - вырезание подстроки пропущено, для реализации рекомендую использовать copy, pos и posex
 - код может чуточку быть другим, если используется делфи 2007 и старше, поэтому там для результата явно написано AnsiString
 - в коде используется документированная особенность StrToInt для преобразования хекс в число.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 9 апреля 2010, 11:14
 Оценка за ответ: 5
 Комментарий к оценке: Отлично! |  
 Мини-форум вопросаВсего сообщений: 0. 10 апреля 2010, 12:32: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |