Delphi/Cpp 等价于 PHP 中的 RawURLEncode
Posted
技术标签:
【中文标题】Delphi/Cpp 等价于 PHP 中的 RawURLEncode【英文标题】:Delphi/Cpp Equivalent to RawURLEncode in PHP 【发布时间】:2013-04-07 12:40:39 【问题描述】:我在 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 中找不到单元
【问题讨论】:
【参考方案1】:PHP 的RawURLEncode
是RFC 3986 的实现。我的网络搜索产生了这个Delphi unit,它声称实现了 RFC 3986。
我根据您的输入对其进行了测试:
$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_在RawURLEncode
的 PHP 文档中找到了我成功进行网络搜索的关键,其中是状态:
根据 RFC 3986 进行 URL 编码
【讨论】:
下载UURIEncode.pas 您要求使用 C++ Builder 或 Delphi。我给了你德尔福。既然您知道要搜索什么,我相信您可以找到 RFC 3986 的干净 C++ 实现。确实非常简单。我什至在答案的底部留下了关于如何执行与我相同的网络搜索的说明。 ;-) 我已经有了“home”编码函数(用于 flash、cpp 和 php),事实上,我一直在寻找能够使用更标准化和通用函数的库。在这种情况下,似乎更好地维护旧的,但我很感激你的帮助。以上是关于Delphi/Cpp 等价于 PHP 中的 RawURLEncode的主要内容,如果未能解决你的问题,请参考以下文章