空格变成%20的现象

yyouyou 2007-11-28 05:52:16
现在用别人编写的一个系统,代码如下,
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl='<%# Bind("url2") %>' Target="_blank" Text='<%# Bind("url2") %>' width="95%"></asp:HyperLink>

在数据库中,该字段是用char 200,没有采用varchar 类型

出现如下问题:
在客户端访问后生成的源码如下:
<a id="sourceAdd_HyperLink3" href="http://www.sohu.com%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20" target="_blank" style="display:inline-block;width:95%;">http://www.sohu.com </a>
因此该链接无效。
对方说这种情况没有出现过,怀疑是我安装的系统(如操作系统,或者iis,或者.net 2.0)问题。我在不同的操作系统上都安装试过,都仍然出现这种问题。
因为其它的原因,我不能自己去改字段,然后让其他人使用该系统。但我测试的时候,把字段改成varchar后就没有问题了。
我想问问大家,这种情况到底是我的系统问题,还是对方的程序问题?
谢谢了。
...全文
3738 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terry717 2010-07-24
  • 打赏
  • 举报
回复
...........
aaaaaasb 2007-12-05
  • 打赏
  • 举报
回复
我的数据库就是VARCHAR的,但是JSP不行啊???????
yyouyou 2007-11-29
  • 打赏
  • 举报
回复
我没碰过asp,所以写法规则都不懂,请谅解哈
huyidao21 2007-11-29
  • 打赏
  • 举报
回复
我只能说我很无语
wss1801 2007-11-29
  • 打赏
  • 举报
回复
学习
yyouyou 2007-11-29
  • 打赏
  • 举报
回复
谢谢楼上的各位
我试了一下,改成如下,但是程序不能运行,还麻烦各位指点一下
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl=' <%# Bind("url2").this.textbox.text.trim() %> ' Target="_blank" Text=' <%# Bind("url2") %> ' width="95%"> </asp:HyperLink>

<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl=' <%# Bind("url2").textbox.text.trim() %> ' Target="_blank" Text=' <%# Bind("url2") %> ' width="95%"> </asp:HyperLink>

<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl=' <%# Bind("url2").text.trim() %> ' Target="_blank" Text=' <%# Bind("url2") %> ' width="95%"> </asp:HyperLink>

<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl=' <%# Bind("url2").trim() %> ' Target="_blank" Text=' <%# Bind("url2") %> ' width="95%"> </asp:HyperLink>
<asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl=' <%# Bind("url2").rtrim %> ' Target="_blank" Text=' <%# Bind("url2") %> ' width="95%"> </asp:HyperLink>
到底应该怎么写呢?谢谢了
liujinyang0511 2007-11-29
  • 打赏
  • 举报
回复
up
bwangel 2007-11-28
  • 打赏
  • 举报
回复
这样的程序你也在用,PF.
蝶恋花雨 2007-11-28
  • 打赏
  • 举报
回复
3楼已经很详细了。数据库和 在添加的时候this.textbox.text.trim();
lwl0376 2007-11-28
  • 打赏
  • 举报
回复
学习了
大正他爹 2007-11-28
  • 打赏
  • 举报
回复
来晚了。
lnwuyaowei 2007-11-28
  • 打赏
  • 举报
回复
snowdish
正解.
肖无疾 2007-11-28
  • 打赏
  • 举报
回复
晚来一步
snowdish 2007-11-28
  • 打赏
  • 举报
回复
数据库设计问题
char(200) 的字段当插入值不足200长度时 将自动加上空格
varchar(200), 则不会补满空格
两者有细微的性能差异,具体可参看相关资料

出现原因如下:程序获取的数据是"http://www.sohu.com " 后面是空格,然后程序在this.Server.HtmlEncode(string) 将空格转换成了空格对应的编码%20

解决方法: 1. 将数据哭的char(200)改为varchar(200) 或者 在程序里去除空格(string.Trim());
zpisgod 2007-11-28
  • 打赏
  • 举报
回复
char 会在字符不足列长度的时候在末尾自动补空格, 生成html之后就变成那个样子了

你可以在取数据的时候 使用 rtrim 在数据库端去掉末尾的空格 或者在使用 trim()方法在代码端去掉空格
heatol 2007-11-28
  • 打赏
  • 举报
回复
htmlencode

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧