|
Вопрос # 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 » Алгоритмы, преобразования модератором Ерёмин А.А.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|