日期:2014-05-20  浏览次数:20413 次

一个奇怪的问题
我页面Page_load的时候写了这个
this.lblUserName.Text   =   this.Request.QueryString[ "ID "];
读的字符串没有问题   可是当字符串是 "管理员1 "的时候页面就出现 "管理? "
有没有人知道啊~~~~传别的字符串读过来都没问题,传 "管理员1 "的时候
页面的地址也写了index.axpx?ID=管理员1了   但只出 "管理? "

------解决方案--------------------
这个是编码问题 .NET默认是utf-8编码
解决办法:
1、在Web.Config中把
<globalization
requestEncoding= "utf-8 "
responseEncoding= "utf-8 "
/>
中的utf-8改成gb2312,没有就在 <system.web> </system.web> 中加上

2、在index.aspx页面中把“管理员1”进行加码
如: <a href= "index.aspx?ID= <%=Server.UrlEncode( "管理员1 ")%> "> Test </a>

测试如下:
页面代码
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:TextBox ID= "TextBox1 " runat= "server "> </asp:TextBox>
<asp:Button ID= "Button1 " runat= "server " OnClick= "Button1_Click " Text= "Button " />
<a href= "Default.aspx?ID= <%=Server.UrlEncode( "管理员1 ")%> "> test </a>
</div>
</form>
</body>

后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString[ "ID "] != null)
TextBox1.Text = Request.QueryString[ "ID "].ToString();
}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect( "Default.aspx?ID=管理员1 ");
}