• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

空格变成%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后就没有问题了。
我想问问大家,这种情况到底是我的系统问题,还是对方的程序问题?
谢谢了。
...全文
3276 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2007-11-28 05:52
社区公告
暂无公告