在应用过程中我使用gridview的hyperlinkfield属性传递的参数值,但是当姓名超过三个汉字的时候它会自动切去最后一个汉字,请问这是为什么?如传递参数的属性是这样定义的
<asp:HyperLinkField DataNavigateUrlFields="bianhao,szdw,username" DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&suozdw={1}&name={2}"
HeaderText="姓名" Text="详细情况" DataTextField="username" >
<ItemStyle Font-Size="Smaller" Wrap="False" />
<HeaderStyle Font-Size="Smaller" />
</asp:HyperLinkField>
传递到目的页面时姓名如果为“张三丰”用response.write察看时只看到“张三”“丰”字被自动切掉了 这是由于汉字编码的引起的问题。只是在这个控件中应该如何解决?
<asp:HyperLinkField DataNavigateUrlFields="bianhao,szdw,username" DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&suozdw={1}&name={2}"
HeaderText="姓名" Text="详细情况" DataTextField="username" >
<ItemStyle Font-Size="Smaller" Wrap="False" />
<HeaderStyle Font-Size="Smaller" />
</asp:HyperLinkField>
传递到目的页面时姓名如果为“张三丰”用response.write察看时只看到“张三”“丰”字被自动切掉了 这是由于汉字编码的引起的问题。只是在这个控件中应该如何解决?
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
改为 <globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
试试
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>Response.Write(Request["name"]);
是正常的
<!-- 全球化
此节设置应用程序的全球化设置。
-->
<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()) %>&suozdw=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "szdw").ToString()) %>&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"]);
DataNavigateUrlFormatString="workerxinxi.aspx?bhao={0}&suozdw={1}&name={2}&s=1"
不知楼主遇到的是否也是这种情况