请教各位如何对绑定的数据进行编码,我这样的结果是乱码。<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString() 请教各位如何对绑定的数据进行编码。我这样的结果是乱码:<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的目的很简单只是想把Name字段的内容编码。希望编码成形如%d0%c7%bc%ca但是结果却是ÐÇ¼Ê <%# GetEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>cs.public string GetEncode(string str){ return Server.UrlEncode(str); //return HttpUtility.UrlEncode(str);} 我的数据是直接从数据源读取的。直接绑定的。在.cs中编码就麻烦了。if(dr.HasRows) { this.Datalist_DownLoad.DataSource = dr; this.Datalist_DownLoad.DataBind(); } 楼主你的方法是可以的,估计是编码的问题看看webconfig中是不是gb2312 <globalization requestEncoding="gb2312" responseEncoding="gb2312" /> webconfig中是gb2312 <globalization requestEncoding="gb2312" responseEncoding="gb2312" /> 用方法:cs.public string GetEncode(string str){ return Server.UrlEncode(str); //return HttpUtility.UrlEncode(str);}但是我是这样绑定的if(dr.HasRows){this.Datalist_DownLoad.DataSource = dr;this.Datalist_DownLoad.DataBind();}怎么样做呢 看看编码前Name的值是什么,我在我机上试了,中文可以转换成%d0%c7%bc%ca的形式可以看看这里的文章地址链接,我采用的也是这种方法http://www.easewe.com/article 数据库里的Name字段是字符型的 <a href='http://<%=Server.UrlEncode(vedioName)%>/<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "name").ToString().Trim())%>.<%=ExtName%>' target=_blank><b><%# DataBinder.Eval(Container.DataItem, "Name")%></b></a>变量的编码后没有成乱码而绑定的Name字段却成了乱编。结果:http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%c7%bc%ca/星际.rmvb <a href='http://<%=Server.UrlEncode(vedioName)%>/<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "name").ToString().Trim())%>.<%=ExtName%>' target=_blank><b><%# DataBinder.Eval(Container.DataItem, "Name")%></b></a>变量的编码后没有成乱码而绑定的Name字段却成了乱编。结果:http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%c7%bc%ca/星际.rmvb 我当初也尝试用过这种方式传递中文值的参数,但结果连编译都通不过,我想到的一个笨办法是给datatable增加一列newVedioName,表达式是Server.UrlEncode(vedioName),然后用新列绑定 <%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>按理说应该是可以的楼上所说的在后台使用一个函数也是可行的,关键是楼主不懂得如何使用,其实它的用法与上述写法是完全一样的.并且,跟你是否从数据库中绑定什么的完全没有关系.假设你在后台代码中写一个函数public string getEncode(string mystr){return(this.Server.UrlEncode(mystr));}那么,前台的绑定,由上述的语句变成即可<%#getEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%> hchxxzx兄台理解了我的意思。。我也按兄台的方法后台写一个函数public string getEncode(string mystr){return(this.Server.UrlEncode(mystr));}前台的绑定也是<%#getEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>但是结果也是乱码:其结果和<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>是一样的。。希望各位指教 你可以尝试使用public string getEncode(string mystr){return(this.Server.htmlEncode(mystr));} hchxxzx兄台很感谢你的支持。你可以尝试使用public string getEncode(string mystr){return(this.Server.htmlEncode(mystr));}当我尝试了你的方法后结果是汉字还是没有编码也没有乱码。汉字还是汉字。 后台好象有问题,主要是DataBinder.Eval(Container.DataItem, "Name")这个东西弄不懂,试试下面,如可,请告之.估计不行<%#Server.UrlEncode(System.Convert.ToSrting(DataBinder.Eval(Container.DataItem, "Name")))%>不可谢谢你呀, what encoding are you using? have you tried<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>? 我做的是一个链接路径,我想用编码后路径显示给用户,目的是让普通用户不能一目了然的知道路径,希望得到形如这些的结果:http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%.rm.aspx代码如下:<asp:datalist id="Datalist_DownLoad" runat="server" ShowFooter="False" ShowHeader="False" RepeatDirection="Horizontal" RepeatColumns="10" Width="30"> <ItemTemplate> <table border="0" cellspacing="2" cellpadding="1" width="20" align="left"> <tr> <td align="left"><a href='http://<%=Server.UrlEncode(vedioName)%>/<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>.<%=ExtName%>' target=_blank><b><%# DataBinder.Eval(Container.DataItem, "Name")%></b></a> </td> </tr> </table> </ItemTemplate>但是通过以上程序得到的结果是:vedioName字符中虽然用中文但是<%=Server.UrlEncode(vedioName)%>的结果却能得到正确的编码。Name字段中同样有汉字。但是<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>绑定后的结果却是乱码。 我也是刚学.net,不过你可以看看IE的设置,在工具里选择Internet选项在高级里面有个选项(总是以UTF-8发送url)你把他勾了,看看行不行 一个插入问题,判断是否为空、是否为数字。 如何将字符串得到控件id 想制作一个母板页50分 ExecuteReader 需要打开的并且可用的连接。该连接的当前状态是 Closed 正则出来的数据如何排序 麻烦给看一下,这里到底有什么不对,头大了! 请加入技术系列群2307382,我们的家!!! 高分求动态新闻发布系统的原码(C#,代码分离) sqlcommand插入数据的问题 问一个关于打开网页的问题 如何在datagrid中使用下拉筐,而且下拉筐是绑定数据库里的一个表 怎么实现图片缩略图。按比例的,不要变形的。
但是结果却是ÐǼÊ
cs.public string GetEncode(string str)
{
return Server.UrlEncode(str);
//return HttpUtility.UrlEncode(str);
}
。在.cs中编码就麻烦了。
if(dr.HasRows)
{
this.Datalist_DownLoad.DataSource = dr;
this.Datalist_DownLoad.DataBind();
}
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
cs.public string GetEncode(string str)
{
return Server.UrlEncode(str);
//return HttpUtility.UrlEncode(str);
}但是我是这样绑定的
if(dr.HasRows)
{
this.Datalist_DownLoad.DataSource = dr;
this.Datalist_DownLoad.DataBind();}
怎么样做呢
结果:
http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%c7%bc%ca/星际.rmvb
结果:
http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%c7%bc%ca/星际.rmvb
按理说应该是可以的
楼上所说的在后台使用一个函数也是可行的,关键是楼主不懂得如何使用,其实它的用法与上述写法是完全一样的.并且,跟你是否从数据库中绑定什么的完全没有关系.
假设你在后台代码中写一个函数
public string getEncode(string mystr)
{
return(this.Server.UrlEncode(mystr));
}
那么,前台的绑定,由上述的语句变成即可
<%#getEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>
我也按兄台的方法后台写一个函数
public string getEncode(string mystr)
{
return(this.Server.UrlEncode(mystr));
}
前台的绑定也是
<%#getEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>
但是结果也是乱码:
其结果和
<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>
是一样的。。希望各位指教
public string getEncode(string mystr)
{
return(this.Server.htmlEncode(mystr));
}
你可以尝试使用
public string getEncode(string mystr)
{
return(this.Server.htmlEncode(mystr));
}
当我尝试了你的方法后结果是汉字还是没有编码也没有乱码。汉字还是汉字。
不可谢谢你呀,
<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>?
http://192.168.0.44/g/%b4%f3%c2%bd/%b6%af%d7%f7%c6%ac/%d0%c7%bc%ca%d0%.rm.aspx代码如下:
<asp:datalist id="Datalist_DownLoad" runat="server" ShowFooter="False" ShowHeader="False" RepeatDirection="Horizontal"
RepeatColumns="10" Width="30">
<ItemTemplate>
<table border="0" cellspacing="2" cellpadding="1" width="20" align="left">
<tr>
<td align="left"><a href='http://<%=Server.UrlEncode(vedioName)%>/<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>.<%=ExtName%>' target=_blank><b><%# DataBinder.Eval(Container.DataItem, "Name")%></b></a>
</td>
</tr>
</table>
</ItemTemplate>
但是通过以上程序得到的结果是:
vedioName字符中虽然用中文但是<%=Server.UrlEncode(vedioName)%>的结果却能得到正确的编码。
Name字段中同样有汉字。但是<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>绑定后的结果却是乱码。