2

我在cpp builder(或delphi)中寻找与PHP RawURLEncode(和Decode)等效的函数。

我使用以下字符串进行测试:(_%_&_+_=_ _"_'_a_b_c_d_e_f_g_h_我希望只编码 var 值,而不是整个 URL)

rawurlencode 返回:_%25_%26_%2B_%3D_%20_%22_%27_a_b_c_d_e_f_g_h_

我试过没有成功:

  • TIdURI::ParamsEncode:_%25_&_+_=_%20_%22_'_a_b_c_d_e_f_g_h_
  • TIdURI::PathEncode:_%25_&_%2B_=_%20_%22_'_a_b_c_d_e_f_g_h_
  • TIdURI::URLEncode:错误:无协议(需要完整路径)
  • HTTPApp::HTMLEncode:(_%_& amp;_+_=_ _& quot;_'_a_b_c_d_e_f_g_h_“&”后加空格)
  • Wininet::WinHTTPEncode:在单元中找不到函数
  • IdGlobal::URLEncode:在单元中找不到函数
  • SynaCode::URLEncode:XE2 中找不到单元
4

1 回答 1

8

PHPRawURLEncodeRFC 3986的实现。我的网络搜索产生了这个声称实现 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 文档中找到了我成功进行网络搜索的关键,其中说明了RawURLEncodewhere is 状态:

根据 RFC 3986 进行 URL 编码

于 2013-04-15T12:09:51.547 回答