在应用过程中我使用gridview的hyperlinkfield属性传递的参数值,但是当姓名超过三个汉字的时候它会自动切去最后一个汉字,请问这是为什么?如传递参数的属性是这样定义的
<asp:HyperLinkField DataNavigateUrlFields="bianhao,szdw,username" DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&amp;suozdw={1}&amp;name={2}"
                    HeaderText="姓名" Text="详细情况" DataTextField="username" >
                    <ItemStyle Font-Size="Smaller" Wrap="False" />
                    <HeaderStyle Font-Size="Smaller" />
                </asp:HyperLinkField>
传递到目的页面时姓名如果为“张三丰”用response.write察看时只看到“张三”“丰”字被自动切掉了 这是由于汉字编码的引起的问题。只是在这个控件中应该如何解决?

解决方案 »

  1.   

    DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&amp;suozdw={1}&amp;name={2}"中name={2}不是限定长度的?
      

  2.   

    在你的web.config中把编码 <globalization 
    requestEncoding="utf-8" 
    responseEncoding="utf-8" 
    /> 
    改为 <globalization 
    requestEncoding="gb2312" 
    responseEncoding="gb2312" 
    /> 
    试试
      

  3.   

    urlencode试一下,应该可以解决问题。
      

  4.   

    设置Web.config配置
    <globalization requestEncoding="gb2312" responseEncoding="gb2312"/>Response.Write(Request["name"]);
    是正常的
      

  5.   

    如果你仅仅要传数字,那么用HyperLinkField确实很方便,但是遇到中文或者某些特殊字符时,就会有问题,解决的方法有两种,一种是在web.config里设置:
        <!--  全球化
              此节设置应用程序的全球化设置。
        -->
        <globalization 
                requestEncoding="GB2313" 
                responseEncoding="GB2313" 
       />
       
     </system.web>
    但我并不推荐这种方法,更好的方法是进行编码转换,转换的方法是Server.UrlEncdo和Server.UrlDecode,应用到GridView绑定的方法是:
    <asp:TemplateColumn>
    <HeaderTemplate>
    姓名
    </HeaderTemplate>
    <ItemTemplate>
    <A href='workerxinxi.aspx?bhao=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "bianhao").ToString()) %>&amp;suozdw=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "szdw").ToString()) %>&amp;name=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "username").ToString()) %>'>
    <%# DataBinder.Eval(Container.DataItem, "username") %>
    </A>
    </ItemTemplate>
    </asp:TemplateColumn>然后,在workerxinxi.aspx里接受的时候需要解码:
    string bhao = Server.UrlDecode(Request.QueryString["bhao"]);
    string suozdw = Server.UrlDecode(Request.QueryString["suozdw"]);
    string name = Server.UrlDecode(Request.QueryString["name"]);
      

  6.   

    用javascript escape()一下就好了,链接用函数写
      

  7.   

    修改成这样试试,在后面再加一个参数
    DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&suozdw={1}&name={2}&s=1"
      

  8.   

    这种问题我以前也遇到过,用jijl2001(jijl2001) 就解决了
    不知楼主遇到的是否也是这种情况