gpt4 book ai didi

delphi - 在默认浏览器中打开网页,网址内带双引号 (")

转载 作者:行者123 更新时间:2023-12-03 14:56:53 25 4
gpt4 key购买 nike

当我尝试打开任何链接内有双引号 (") 的网站时,例如 user.php?name="stackoverflow" 它只是剪切 " 或者有时它会将我重定向到 Google!?使用的代码:

ShellExecute(0, 'open', PChar('open'), PChar(URL), nil, SW_SHOW) ;

最佳答案

您需要使用完全限定的 URL,包括 http:// 并通过替换双引号 ( ") 与 %22

您还传递了错误的参数。

参见 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, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
end;

您应该始终对 URL 参数进行编码,而不仅仅是双引号。您可以将 Indy 与 TIdURI.URLEncode - IdURI 单位一起使用。
您还可以使用 HTTPApp 单元中的 HTTPEncodeURL 中的每个参数进行编码。

请注意,TIdURI.URLEncode 也会对 ?& 分隔符进行编码。所以我认为用 HTTPEncode 单独编码每个参数是一个更好的主意,例如:

URL := 'http://www.user.com/?param1=%s&param2=%s';
URL := Format(URL, [
HTTPEncode('"stackoverflow.com"'),
HTTPEncode('hello word!')]);
// output: http://www.user.com/?param1=%22stackoverflow.com%22&param2=hello+word!

关于delphi - 在默认浏览器中打开网页,网址内带双引号 ("),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com