读书人

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

发布时间: 2013-01-11 11:57:35 作者: rapoo

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() 编码的字符串进行解码

读书人网 >asp.net

热点推荐