请教各位如何对绑定的数据进行编码。
我这样的结果是乱码:
<%#Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>

解决方案 »

  1.   

    我的目的很简单只是想把Name字段的内容编码。希望编码成形如%d0%c7%bc%ca
    但是结果却是&ETH;&Ccedil;&frac14;&Ecirc;
      

  2.   

    <%# GetEncode(DataBinder.Eval(Container.DataItem, "Name").ToString())%>
    cs.public string GetEncode(string str)
    {
       return Server.UrlEncode(str);
       //return HttpUtility.UrlEncode(str);
    }
      

  3.   

    我的数据是直接从数据源读取的。直接绑定的
    。在.cs中编码就麻烦了。
    if(dr.HasRows)
    {
    this.Datalist_DownLoad.DataSource = dr;
    this.Datalist_DownLoad.DataBind();

    }
      

  4.   

    楼主你的方法是可以的,估计是编码的问题看看webconfig中是不是gb2312
        <globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />
      

  5.   

    webconfig中是gb2312
        <globalization 
                requestEncoding="gb2312" 
                responseEncoding="gb2312" 
       />
      

  6.   

    用方法:
    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();}
    怎么样做呢
      

  7.   

    看看编码前Name的值是什么,我在我机上试了,中文可以转换成%d0%c7%bc%ca的形式可以看看这里的文章地址链接,我采用的也是这种方法http://www.easewe.com/article
      

  8.   

    数据库里的Name字段是字符型的
      

  9.   

    <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/&aelig;&#152;&#159;é&#153;&#133;.rmvb
      

  10.   

    <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/&aelig;&#152;&#159;é&#153;&#133;.rmvb
      

  11.   

    我当初也尝试用过这种方式传递中文值的参数,但结果连编译都通不过,我想到的一个笨办法是给datatable增加一列newVedioName,表达式是Server.UrlEncode(vedioName),然后用新列绑定
      

  12.   

    <%#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())%>
      

  13.   

    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())%>
    是一样的。。希望各位指教
      

  14.   

    你可以尝试使用
    public string getEncode(string mystr)
    {
    return(this.Server.htmlEncode(mystr));
    }
      

  15.   

    hchxxzx兄台很感谢你的支持。
    你可以尝试使用
    public string getEncode(string mystr)
    {
    return(this.Server.htmlEncode(mystr));
    }
    当我尝试了你的方法后结果是汉字还是没有编码也没有乱码。汉字还是汉字。
      

  16.   

    后台好象有问题,主要是DataBinder.Eval(Container.DataItem, "Name")这个东西弄不懂,试试下面,如可,请告之.估计不行<%#Server.UrlEncode(System.Convert.ToSrting(DataBinder.Eval(Container.DataItem, "Name")))%>
    不可谢谢你呀,
      

  17.   

    what encoding are you using? have you tried
    <%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "Name").ToString(), System.Text.Encoding.GetEncoding("Gb2312"))%>?
      

  18.   

    我做的是一个链接路径,我想用编码后路径显示给用户,目的是让普通用户不能一目了然的知道路径,希望得到形如这些的结果:
    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"))%>绑定后的结果却是乱码。
      

  19.   

    我也是刚学.net,不过你可以看看IE的设置,在工具里选择Internet选项在高级里面有个选项(总是以UTF-8发送url)你把他勾了,看看行不行