В процессе разработки веб-приложений часто возникает необходимость кодирования URL. В PHP для этого существует функция rawurlencode, но что делать, если вы работаете с Delphi или C++ Builder? В этой статье мы рассмотрим, как найти аналог rawurlencode в этих языках программирования.
Проблема
Разработчик ищет функцию, аналогичную PHP rawurlencode, для использования в C++ Builder или Delphi. Нужно кодировать строку _%_&_+_=_ _"_'_a_b_c_d_e_f_g_h_, но только переменные, а не весь URL.
Решение
PHP rawurlencode реализует стандарт RFC 3986. После поиска в Интернете был найден Delphi-единица, которая утверждает, что реализует этот стандарт. Вот код, который кодирует строку с использованием этой единицы:
{$APPTYPE CONSOLE}
uses
System.SysUtils,
UURIEncode in 'UURIEncode.pas';
begin
Writeln(URIEncode('_%_&_+_=_ _"_''_a_b_c_d_e_f_g_h_'));
Readln;
end.
Вывод кода:
_%25_%26_%2B_%3D_%20_%22_%27_a_b_c_d_e_f_g_h_
Как видно, результат кодирования совпадает с результатом PHP rawurlencode.
Альтернативный ответ
Разработчик также пытался использовать другие функции кодирования URL в Delphi и C++ Builder, но безуспешно. Вот список попыток:
TIdURI::URLEncode: Ошибка: нет протокола (требуется полный путь)
HTTPApp::HTMLEncode: _%_& amp;_+_=_ _& quot;_'_a_b_c_d_e_f_g_h_ (добавлено пространство после "&")
Wininet::WinHTTPEncode: Функция не найдена в единице
IdGlobal::URLEncode: Функция не найдена в единице
SynaCode::URLEncode: Единица не найдена в XE2
Подтвержденный ответ
PHP rawurlencode реализует стандарт RFC 3986. После поиска в Интернете был найден Delphi-единица, которая утверждает, что реализует этот стандарт. Вот код, который кодирует строку с использованием этой единицы:
{$APPTYPE CONSOLE}
uses
System.SysUtils,
UURIEncode in 'UURIEncode.pas';
begin
Writeln(URIEncode('_%_&_+_=_ _"_''_a_b_c_d_e_f_g_h_'));
Readln;
end.
Вывод кода:
_%25_%26_%2B_%3D_%20_%22_%27_a_b_c_d_e_f_g_h_
Заключение
В этой статье мы рассмотрели, как найти аналог PHP rawurlencode для использования в Delphi и C++ Builder. Мы нашли Delphi-единица, реализующую стандарт RFC 3986, и использовали ее для кодирования строки. Несмотря на то, что другие попытки кодирования URL не увенчались успехом, мы нашли работающее решение, которое можно использовать в наших проектах.
В статье рассматривается решение задачи кодирования URL в Delphi и C++ Builder, где ищется аналог функции PHP `rawurlencode`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.