字符串生成器将 % 添加到 URL 的末尾

本文关键字:URL 添加 字符串 | 更新日期: 2023-09-27 18:31:19

我在代码中构建字符串时遇到了一个小问题。当我调试我的页面时,网址不正确。例如,当点击我页面上的链接时,谷歌的网址是这个。http://www.google.co.uk%22%22/

有关代码,请参见下文。

sb.Append(@"<a href=" + r["Url"].ToString() + "'"" + @""" target=""blank"">");
sb.Append(@"<img src=""../ShowImage.ashx?id=" + r["Image_id"] + "'" title='"" + r["Title"].ToString() + "'"  alt='"" + r["Alt_text"].ToString() + "'"  >");
sb.Append("</a>");

我构建字符串的方式有错误吗?

谢谢。

字符串生成器将 % 添加到 URL 的末尾

您正在混合使用'"'"" ) 转义的引号与使用 " ( @""" ) 转义的引号,并且有一个太多。试试这个:

sb.Append(@"<a href=""" + r["Url"].ToString() + @""" target=""blank"">");

%22"的字符串编码版本

尝试:

sb.Append(@"<a href=" + r["Url"].ToString() + "' + @""" target=""blank"">");

这是因为您在 URL 之前没有任何引号,但您之后有两个引号。省略引号是可以的(对于没有空格的值),但你必须省略它们。省略起始引号时,末尾的引号(在本例中为标记)将成为值的一部分。

另外,当你有一个StringBuilder时,为什么要连接字符串?直接使用 Append 方法,而不是先连接字符串,然后追加结果。

sb
  .Append("<a href='"").Append(r["Url"].ToString()).Append("'" target='"blank'">")
  .Append("<img src='"../ShowImage.ashx?id=").Append(r["Image_id"]).Append("'" title='"").Append(r["Title"].ToString()).Append("'"  alt='"").Append(r["Alt_text"].ToString()).Append("'">")
  .Append("</a>");