HyperLink NavigateUrl赋值后有乱码

sjiuyuan85 2010-01-29 07:14:55
string FileName = "[ABC]测试文件_Log_20100101.wmv";

HyperLink Link = (HyperLink)e.Row.Cells[13].Controls[0];
Link.NavigateUrl = "\\\\192.0.0.1\\file\\" + FileName;

在调试的时候NavigateUrl的值没有问题,是“\\\\192.0.0.1\\file\\[ABC]测试文件_Log_20100101.wmv”
但是当鼠标放在链接上在ie的左下角显示的是“\\\\192.0.0.1\\file\\%5BABC%5D测试文件_Log_20100101.wmv”

也就是只有[]变成了乱码 中文字没有问题
这样点击链接后无法打开这个视频文件 提示“无法显示网页”


我也查找了一些帖子 尝试着改成Link.NavigateUrl = Server.UrlEncode("\\\\192.0.0.1\\file\\" + FileName);
但是点击链接后 网页变成了一堆红色字的乱码

还试过在Web.config里加 <globalization requestEncoding="gb2312" responseEncoding="gb2312"/> 但还是不行

我现在真的不知道应该怎样做了,请大家帮帮忙 很急 谢谢~!!
...全文
408 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiangong789 2012-03-20
  • 打赏
  • 举报
回复
好老的帖子啊 可是我好像还是解决不了啊
jack15850798154 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vrhero 的回复:]
uri必须要对特殊字符编码,显示无关紧要...
[/Quote]
正确。如果你跳转错误,那说明你的路径应该错误了。。。
jack15850798154 2010-01-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...

Link.NavigateUrl = "file:///192.0.0.1/file/" + FileName;
[/Quote]
我写了一个也是的"["如果鼠标放上去为 %5B ']'为%5D个人认为是不是内部的一个编码格式。。
LZWNEWSWAY96088 2010-01-31
  • 打赏
  • 举报
回复
你这里的问题是转义序列的问题。看下面的代码:
string certsql = string.Format(@"select distinct Partner_Certification from MARS$ where Partner_Certification!='' and Country='{0}';
select distinct GTMType GTM from MARS$ where GTMType!='' and Country='{0}';
select distinct Sales_Level from MARS$ where Sales_Level is not null and Sales_Level !='' and Country='{0}';
select distinct Cisco_Category from MARS$ where Cisco_Category!='' and Country='{0}';", sctry);
这才是字符串正确的写法。
string.Format();这个方法表示字符串可使用占位符,将变量放在最后替换占位符。"@"表示可任意换行,不需要再用字符串相加的字法。
string.Format();这个方法同时也能处理字符中的"\\\\192.0.0.1\\file\\" + FileName;斜线转义问题.
所以你可这样写:string.Format(@"./192.0.0.1/file/{0}",FileName);
LZWNEWSWAY96088 2010-01-31
  • 打赏
  • 举报
回复
页面乱码彻底解决方案:
1.在设计数据时,就要注意:varchar,char,text;这样的数据类型就不要用了.全都改用:nvarchar,nchar,ntext; 前缀"n"表示是:Unicode.
2.配置文件中:<globalization requestEncoding="utf-8" responseEncoding="utf-8"/> ,就用:utf-8 这样也是保证:Unicode
3.在每个页面的HTML页:<%@ Page language="c#" ...... CodePage="65001" %> 都加上:CodePage="65001" 这样还是保证:Unicode
4.在服务器代码页写SQL语句时要注意:INSERT INTO rates(currency_id,date,currency,Rate) VALUES
(1,N'2010-01-08',N'AUD',1.00) 在对应的字符型字段值前加上:N --这样还是保证:Unicode
特别是INSERT,UPDATE 要注意给值加上:N前缀.
--程序运行时,这4点联合作用,页面是绝对不会出现乱码的.不管是(中文,日文,德文,英文,西班牙文,葡萄牙文,法文,俄文......)都能正常显示.
vrhero 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sjiuyuan85 的回复:]
引用 6 楼 vrhero 的回复:
uri必须要对特殊字符编码,显示无关紧要...


但是现在如果显示正确的话就能打开文件 错误的话就不行啊
[/Quote]
你能不能打开文件只跟客户端字符集是否支持有关系,和显示无关...
wuyq11 2010-01-30
  • 打赏
  • 举报
回复
在那种环境里
在VS2003里可以显示,在以上使用Hyperlink事件实现打开文件
sjiuyuan85 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vrhero 的回复:]
uri必须要对特殊字符编码,显示无关紧要...
[/Quote]

但是现在如果显示正确的话就能打开文件 错误的话就不行啊
sjiuyuan85 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 seesea125 的回复:]
首先要这样限定一下 <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
另外这个限定后,你还要看一下页面,确定是否是utf-8,因为有时候页面上限定了gb2312,就算webconfig限定成utf-8了,页面的限定还是优先级高一些

然后发送参数的时候Server.UrlEncode

接收的时候,Server.UrlDecode
保证没问题

[/Quote]

如果Link.NavigateUrl = Server.UrlEncode("\\\\192.0.0.1\\file\\" + FileName);
那我什么时候Server.UrlDecode呢?
我只是做了个链接 在什么函数中吗?还是怎么做?
YnSky 2010-01-30
  • 打赏
  • 举报
回复
一般要所有页面的编码格式统一.
vrhero 2010-01-30
  • 打赏
  • 举报
回复
uri必须要对特殊字符编码,显示无关紧要...
sjiuyuan85 2010-01-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 vrhero 的回复:]

你能不能打开文件只跟客户端字符集是否支持有关系,和显示无关...
[/Quote]


那怎么样才能让客户端的字符集支持呢?

现在是如下情况
Link.NavigateUrl = "mms://192.0.0.1/file/" + FileName; FileName中的中文显示是乱码
Link.NavigateUrl = "192.0.0.1/file/" + FileName; 没有问题 只要去掉mms://就可以
为什么 我现在要怎样做才能通过点击这个链接来打开视频文件呢
seesea125 2010-01-29
  • 打赏
  • 举报
回复
首先要这样限定一下<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
另外这个限定后,你还要看一下页面,确定是否是utf-8,因为有时候页面上限定了gb2312,就算webconfig限定成utf-8了,页面的限定还是优先级高一些

然后发送参数的时候Server.UrlEncode

接收的时候,Server.UrlDecode
保证没问题
sjiuyuan85 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...

Link.NavigateUrl = "file:///192.0.0.1/file/" + FileName;
[/Quote]

这样也不行

而且像我原来那样赋值的话 当鼠标放在链接上在ie的左下角显示的是“file://192.0.0.1/file/%5BABC%5D测试文件_Log_20100101.wmv” 之前是我笔误写错了

其实我只要把[]去掉就可以查看视频文件了 但是为什么[]就是有问题呢

sjiuyuan85 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
编码
[/Quote]

这样也不行 有试过
vrhero 2010-01-29
  • 打赏
  • 举报
回复
跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...

Link.NavigateUrl = "file:///192.0.0.1/file/" + FileName;
wuyq11 2010-01-29
  • 打赏
  • 举报
回复
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
编码

62,047

社区成员

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

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

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

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