Delphi/Cpp相当于PHP中的RawURLEncode

sgm*_*sgm 2 php delphi html-encode c++builder urlencode

我在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中找不到单位

Dav*_*nan 8

PHP RawURLEncodeRFC 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.
Run Code Online (Sandbox Code Playgroud)

输出是:

_%25_%26_%2B_%3D_%20_%22_%27_a_b_c_d_e_f_g_h_

我的成功网络搜索的关键是在PHP文档中RawURLEncode找到状态:

根据RFC 3986进行URL编码

  • 您要求使用C++ Builder或Delphi.我给了你德尔福.既然你知道要搜索什么,我相信你可以找到RFC 3986的干净的C++实现.它确实非常简单.我甚至在答案的底部留下了关于如何执行我所做的相同网络搜索的说明.;-) (2认同)