HyperLink NavigateUrl赋值后有乱码

问题描述

stringFileName="[ABC]测试文件_Log_20100101.wmv";HyperLinkLink=(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里加<globalizationrequestEncoding="gb2312"responseEncoding="gb2312"/>但还是不行我现在真的不知道应该怎样做了,请大家帮帮忙很急谢谢~!!

解决方案

解决方案二:
<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>编码
解决方案三:
跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...Link.NavigateUrl="file:///192.0.0.1/file/"+FileName;
解决方案四:
引用1楼wuyq11的回复:

<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>编码

这样也不行有试过
解决方案五:
引用2楼vrhero的回复:

跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...Link.NavigateUrl="file:///192.0.0.1/file/"+FileName;

这样也不行而且像我原来那样赋值的话当鼠标放在链接上在ie的左下角显示的是“file://192.0.0.1/file/%5BABC%5D测试文件_Log_20100101.wmv”之前是我笔误写错了其实我只要把[]去掉就可以查看视频文件了但是为什么[]就是有问题呢
解决方案六:
首先要这样限定一下<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>另外这个限定后,你还要看一下页面,确定是否是utf-8,因为有时候页面上限定了gb2312,就算webconfig限定成utf-8了,页面的限定还是优先级高一些然后发送参数的时候Server.UrlEncode接收的时候,Server.UrlDecode保证没问题
解决方案七:
uri必须要对特殊字符编码,显示无关紧要...
解决方案八:
一般要所有页面的编码格式统一.
解决方案九:
引用5楼seesea125的回复:

首先要这样限定一下<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>另外这个限定后,你还要看一下页面,确定是否是utf-8,因为有时候页面上限定了gb2312,就算webconfig限定成utf-8了,页面的限定还是优先级高一些然后发送参数的时候Server.UrlEncode接收的时候,Server.UrlDecode保证没问题

如果Link.NavigateUrl=Server.UrlEncode("\\192.0.0.1\file\"+FileName);那我什么时候Server.UrlDecode呢?我只是做了个链接在什么函数中吗?还是怎么做?
解决方案十:
引用6楼vrhero的回复:

uri必须要对特殊字符编码,显示无关紧要...

但是现在如果显示正确的话就能打开文件错误的话就不行啊
解决方案十一:
在那种环境里在VS2003里可以显示,在以上使用Hyperlink事件实现打开文件
解决方案十二:
引用9楼sjiuyuan85的回复:

引用6楼vrhero的回复:uri必须要对特殊字符编码,显示无关紧要...但是现在如果显示正确的话就能打开文件错误的话就不行啊

你能不能打开文件只跟客户端字符集是否支持有关系,和显示无关...
解决方案十三:
引用11楼vrhero的回复:

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

那怎么样才能让客户端的字符集支持呢?现在是如下情况Link.NavigateUrl="mms://192.0.0.1/file/"+FileName;FileName中的中文显示是乱码Link.NavigateUrl="192.0.0.1/file/"+FileName;没有问题只要去掉mms://就可以为什么我现在要怎样做才能通过点击这个链接来打开视频文件呢
解决方案十四:
页面乱码彻底解决方案:1.在设计数据时,就要注意:varchar,char,text;这样的数据类型就不要用了.全都改用:nvarchar,nchar,ntext;前缀"n"表示是:Unicode.2.配置文件中:<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"/>,就用:utf-8这样也是保证:Unicode3.在每个页面的HTML页:<%@Pagelanguage="c#"......CodePage="65001"%>都加上:CodePage="65001"这样还是保证:Unicode4.在服务器代码页写SQL语句时要注意:INSERTINTOrates(currency_id,date,currency,Rate)VALUES(1,N'2010-01-08',N'AUD',1.00)在对应的字符型字段值前加上:N--这样还是保证:Unicode特别是INSERT,UPDATE要注意给值加上:N前缀.--程序运行时,这4点联合作用,页面是绝对不会出现乱码的.不管是(中文,日文,德文,英文,西班牙文,葡萄牙文,法文,俄文......)都能正常显示.
解决方案十五:
你这里的问题是转义序列的问题。看下面的代码:stringcertsql=string.Format(@"selectdistinctPartner_CertificationfromMARS$wherePartner_Certification!=''andCountry='{0}';selectdistinctGTMTypeGTMfromMARS$whereGTMType!=''andCountry='{0}';selectdistinctSales_LevelfromMARS$whereSales_LevelisnotnullandSales_Level!=''andCountry='{0}';selectdistinctCisco_CategoryfromMARS$whereCisco_Category!=''andCountry='{0}';",sctry);这才是字符串正确的写法。string.Format();这个方法表示字符串可使用占位符,将变量放在最后替换占位符。"@"表示可任意换行,不需要再用字符串相加的字法。string.Format();这个方法同时也能处理字符中的"\\192.0.0.1\file\"+FileName;斜线转义问题.所以你可这样写:string.Format(@"./192.0.0.1/file/{0}",FileName);
解决方案:
引用2楼vrhero的回复:

跟编码没关系...URI有URI的规矩,UNC不是随便在哪里都能用的...Link.NavigateUrl="file:///192.0.0.1/file/"+FileName;

我写了一个也是的"["如果鼠标放上去为%5B']'为%5D个人认为是不是内部的一个编码格式。。
解决方案:
引用6楼vrhero的回复:

uri必须要对特殊字符编码,显示无关紧要...

正确。如果你跳转错误,那说明你的路径应该错误了。。。
解决方案:
好老的帖子啊可是我好像还是解决不了啊

时间: 2024-08-31 07:15:17

HyperLink NavigateUrl赋值后有乱码的相关文章

hyperlink-关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码

问题描述 关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码 请问大家一个问题,我在使用POI 3.6 的时候, 在为单元格添加HyperLink的时候,遇到添加 中文连接乱码问题,例如我的链接地址是:/file/这是PDF.PDF 在EXCEL中就会变为/file/??PDF.PDF 请问如何解决? 解决方案 http://www.iteye.com/problems/70541

很奇怪的问题,java程序在服务器上跑,string直接赋值乱码

问题描述 @RequestMapping(value="qunfajiekou")@ResponseBodypublicvoidqunfajiekou(Stringfromid,Integeroffset){Stringcontent="乱码啊";logger.info("luanma{}",content);} 这样一个简单的程序,本地是好的,但是上传到服务器上远程调试,content竟然是乱码,自然日志输出也就是乱码了?有人知道是什么问题吗,

PHP网站程序乱码问题解决方法

乱码一直是困扰PHP初学者的一个非常大的问题,现在总结下造成乱码的原因及解决方法: 一.HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库编码,及连接数据库编码: 二.文件在存储编码:比如文件inde.php,改变其存储编码为所需编码.只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略): 三.数据库编码:比如用的是phpmyadmin 选择数

解决PHP初学者的乱码问题

乱码一直是困扰PHP初学者的一个非常大的问题,现在总结下造成乱码的原因及解决方法: 一.HTML页面编码:meta http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库编码,及连接数据库编码: 二.文件在存储编码:比如文件inde.php,改变其存储编码为所需编码.只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略): 三.数据库编码:比如用的是phpmyadmin 选择数

彻底解决全站乱码

先分析一下出现乱码的几种情况: 数据在页面显示有乱码 数据到服务器后有乱码 从服务器返回的有乱码 使用Ajax收发时有乱码   数据在页面显示有乱码 也就是服务器获取数据时没有问题,在客户端上显示数据为乱码,这种情况最好解决,只需修改页面的编码即可: pageEncoding="utf-8" <meta http-equiv="Content-Type" content="text/html; charset=utf-8">   数据

asp.net编程篇之Request对象和虚拟路径

编程处理"~" (1) 如果在服务端控件中(使用runat="server"的控件)会自动将"~"进行转换,如果在HTML控件或者需要在代码中转换的话可以使用VirtualPathUtility类中静态方法进行虚拟路径,全路径等的转换,比如:VirtualPathUtility.ToAbsolute("~/a/b.aspx")就是将虚拟路径转换为相对应于应用程序根目录的全路径,也就是"WebSite/a/b.aspx

怎样在SharePoint中在线编辑文档

我一直以为只有在Document Library里面的File才会支持在线编辑.直到今天早上我才发现用IE打开List里面的Attachments也是支持在线编辑的,但前提是必须是IE浏览器. 目前正在开发的项目,我开始设计时是把所有的审批信息存放在List中,上传的文档以Attachments形式保存于List中,昨天客户来公司,我演示的时候,用Chrome打开附件,直接下载了(以后建议用IE),客户需要在线编辑功能,还狠狠的批了我们一顿,附件不能在线编辑,那我审核个毛线.(其实是可以的,用I

IE 11中 PDF下载时原来阅览中的PDF不显示了

问题描述 程序是这样的主页面(1.aspx)是frameset<framename="main"src="2.aspx"><framename="body"src="3.aspx">上方的2.aspx用来显示PDFResponse.Redirect("PDF/1.PDF");下方的3.aspx是生成HyperLink,点击后下载PDFHyperLink.Target="ma

datagrid和repeader控件中替换标识值的方法_实用技巧

DataGrid控件中替换标识值的使用: <asp:DataGrid ID="dgList" runat="server" Width="100%" AutoGenerateColumns="False"> <Columns> <asp:BoundColumn DataField="COP_G_NO" HeaderText="物料号/成品货号"><