Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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 » Алгоритмы, преобразования модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.