【问题标题】:Delphi/Cpp Equivalent to RawURLEncode in PHPDelphi/Cpp 等价于 PHP 中的 RawURLEncode
【发布时间】: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 中找不到单元

【问题讨论】:

    标签: php delphi c++builder urlencode html-encode


    【解决方案1】:

    PHP 的RawURLEncodeRFC 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 编码

    【讨论】:

    • 您要求使用 C++ Builder 或 Delphi。我给了你德尔福。既然您知道要搜索什么,我相信您可以找到 RFC 3986 的干净 C++ 实现。确实非常简单。我什至在答案的底部留下了关于如何执行与我相同的网络搜索的说明。 ;-)
    • 我已经有了“home”编码函数(用于 flash、cpp 和 php),事实上,我一直在寻找能够使用更标准化和通用函数的库。在这种情况下,似乎更好地维护旧的,但我很感激你的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2010-09-29
    • 2010-09-27
    • 2012-08-07
    相关资源
    最近更新 更多