首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

HTML里传递变量值(中文)给ASP.NET出现乱码

2013-01-11 
HTML里传递变量值(中文)给ASP.NET出现乱码?求救传递代码a hrefSell_List.aspx?Order%# DataBinder.Ev

HTML里传递变量值(中文)给ASP.NET出现乱码?求救
传递代码

<a href="Sell_List.aspx?Order=<%# DataBinder.Eval(Container.DataItem,"Numbers")%>&Callname=<%# HttpUtility.UrlEncode((DataBinder.Eval(Container.DataItem,"F_CallName")).ToString(),Encoding.UTF8)%>&Tel=<%# DataBinder.Eval(Container.DataItem,"F_Tel")%>&FAX=<%# DataBinder.Eval(Container.DataItem,"F_Fax")%>&Zipcode=<%# DataBinder.Eval(Container.DataItem,"F_Zipcode")%>&Add=<%# HttpUtility.UrlEncode((DataBinder.Eval(Container.DataItem,"F_Add")).ToString(),Encoding.UTF8)%>&Wares=<%# HttpUtility.UrlEncode((DataBinder.Eval(Container.DataItem,"WarehouseNum")).ToString(),Encoding.UTF8)%>&Handle=<%# HttpUtility.UrlEncode((DataBinder.Eval(Container.DataItem,"Handle")).ToString(),Encoding.UTF8)%>&Totals=<%# DataBinder.Eval(Container.DataItem,"Total")%>&Times=<%# HttpUtility.UrlEncode((DataBinder.Eval(Container.DataItem,"Times")).ToString(),Encoding.UTF8)%>" class="A1"><%# DataBinder.Eval(Container.DataItem,"Numbers")%></a>



获取值的代码(语言是ASP.NET):
                       string NuM=Request.QueryString["Order"].ToString().Trim();
                       NM.Text=NuM;
                   TM.Text=Request.QueryString["Times"];
           TT.Text=Request.QueryString["Totals"]+" (RMB)";
   HT.Text=Request.QueryString["Handle"];
   WH.Text=Request.QueryString["Wares"];
                    NAME.Text = Request.QueryString["Callname"];
                    TEL.Text = Request.QueryString["Tel"];
                    FAX.Text = Request.QueryString["Fax"];
                    ZIP.Text = Request.QueryString["Zip"];
                    ADD.Text = Request.QueryString["Add"];
asp.net html
[解决办法]


乱码的话,在接收参数的时候,使用

string args = Server.UrlDecode(Request.QueryString["Order"].ToString().Trim());
[解决办法]
使用Server.UrlEncode、Server.UrlDecode进行编码解码

[解决办法]
引用:
使用Server.UrlEncode、Server.UrlDecode进行编码解码
++
[解决办法]
举个例子:
第一种:
跳转:Default2.aspx?id=哦,卡姆昂

接受页面:string idddd = Server.UrlDecode(Request["id"].ToString());  

结果:idddd为: 哦,卡姆昂


第二种:
跳转:"Default2.aspx?id="+Server.UrlEncode("哦,卡姆昂")

接收页面:string strid = Request["id"].ToString();

结果:strid 为:哦,卡姆昂




[解决办法]
可以看一下asp.net的HttpServerUtility的UrlEncode的代码:

public string UrlEncode(string s)
{
    Encoding e = (this._context != null) ? this._context.Response.ContentEncoding : Encoding.UTF8;
    return HttpUtility.UrlEncode(s, e);
}

这里可见,如果你不是使用默认的UTF8编码,那么asp.net就很可能会产生歧义。

我们使用其它客户端,例如Silverlight,来访问asp.net页面,就会出现歧义。因为asp.net会自己想当然地使用gb2312,而silverlight却会使用utf8!

因此在讨论使用UrlEncode和UrlDecode之前,我建议首先记得:不要使用gb2312(或者别的什么),保证只用默认的utf8!
[解决办法]

传值时使用Server.UrlEncode编码
再使用Server.UrlDecode进行解码接受
[解决办法]

用escape() 来编码字符串
[解决办法]
 unescape() 对 escape() 编码的字符串进行解码

热点排行