delphi – 在默认浏览器中打开网页,在url中使用双引号(“)
发布时间:2020-12-15 04:23:29 所属栏目:大数据 来源:网络整理
导读:当我尝试打开链接中有双引号(“)的任何网站时,对于ex.user.php?name =”stackoverflow“它只是削减”或者有时它会将我重定向到Google !? 二手代码: ShellExecute(0,'open',PChar('open'),PChar(URL),nil,SW_SHOW) ; 解决方法 您需要使用包含http://的完全
当我尝试打开链接中有双引号(“)的任何网站时,对于ex.user.php?name =”stackoverflow“它只是削减”或者有时它会将我重定向到Google !?
二手代码: ShellExecute(0,'open',PChar('open'),PChar(URL),nil,SW_SHOW) ; 解决方法
您需要使用包含http://的完全限定URL,并通过将双引号(“)替换为”来转义/编码URL.
你也传递了错误的参数. 请参阅MSDN:Use ShellExecute to launch the default Web browser 例: procedure TForm1.Button1Click(Sender: TObject); var URL: string; begin URL := 'http://www.user.com/?name="stackoverflow"'; URL := StringReplace(URL,'"','%22',[rfReplaceAll]); ShellExecute(0,SW_SHOWNORMAL); end; 您应始终对URL参数进行编码,而不仅仅是双引号.您可以将Indy与TIdURI.URLEncode – IdURI单位一起使用. 注意TIdURI.URLEncode会编码吗?和&分隔符也.所以我认为用HTTPEncode分别编码每个参数是个更好的主意,例如: URL := 'http://www.user.com/?param1=%s¶m2=%s'; URL := Format(URL,[ HTTPEncode('"stackoverflow.com"'),HTTPEncode('hello word!')]); // output: http://www.user.com/?param1=%22stackoverflow.com%22¶m2=hello+word! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |