Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

HTTP кодирование строки

Delphi , Синтаксис , Шифрование

HTTP кодирование строки

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function HTTPEncode(const AStr: string): string;
 const
   NoConversion = ['A'..'Z', 'a'..'z', '*', '@', '.', '_', '-'];
 var
   Sp, Rp: PChar;
 begin
   SetLength(Result, Length(AStr) * 3);
   Sp := PChar(AStr);
   Rp := PChar(Result);
   while Sp^ <> #0 do
   begin
     if Sp^ in NoConversion then
       Rp^ := Sp^
     else if Sp^ = ' ' then
       Rp^ := '+'
     else
     begin
       FormatBuf(Rp^, 3, '%%%.2x', 6, [Ord(Sp^)]);
       Inc(Rp, 2);
     end;
     Inc(Rp);
     Inc(Sp);
   end;
   SetLength(Result, Rp - PChar(Result));
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Edit1.Text := HTTPEncode(Edit1.Text);
 end;

Это функция Delphi, которая кодирует строку в соответствии с правилами HTTP-кодирования, также известной как кодировка URL или процентная кодировка.

Функция HTTPEncode принимает входную строку AStr и возвращает закодированную строку Result.

Вот шаг за шагом, что функция делает:

  1. Она определяет множество символов, которые не требуют кодирования (NoConversion). Это буквы (оба больших и маленьких), звездочки, знаки @, точки, подчерки и тире.
  2. Она инициализирует два указателя: Sp указывает на входную строку AStr, а Rp указывает на результат Result.
  3. Цикл проходит по каждому символу в входной строке. Для каждого символа:
    • Если он находится в множестве NoConversion, функция просто копирует символ в результат.
    • Если это пробельный символ (' '), функция заменяет его знаком плюс ('+').
    • В противном случае функция использует функцию FormatBuf для преобразования символа в код hexadecimal (используя форматировщик %.2x) и добавляет его к результату. Закодированный символ всегда имеет длину 2 символа.
  4. После обработки каждого символа, функция увеличивает оба указателя (Rp и Sp) для перехода к следующему символу.
  5. Наконец, функция устанавливает длину результата в новое положение указателя Rp.

Процедура Button1Click - это простой обработчик события, который вызывает функцию HTTPEncode с текстом из edit-окна (Edit1.Text) и присваивает закодированный результат тому же edit-окну.

Пример использования:

  • Вход: "Hello World!"
  • Выход: "Hello+World%21"
    • Пробельный символ заменен знаком плюс.
    • Знак восклицания (!) преобразован в его код hexadecimal %21.

Implemented this way, the code is quite efficient and easy to understand, but it's worth noting that there are more comprehensive URL encoding libraries available, such as the System.SysUtils unit in Delphi.

HTTP-кодирование строки - функция на языке Delphi, которая кодирует входную строку в соответствии с протоколом HTTP, заменяя пробелы знаком плюс и остальные символы на соответствующие коды в формате hexadecimal.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шифрование ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 05:05:55/0.0032861232757568/0