最近遇到一编码问题,关于淘宝的我在淘宝网首页中的搜索中输入“假发”,然后点搜索,地址栏会变成如下:http://s.taobao.com/search?q=%BC%D9%B7%A2&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&initiative_id=tbindexz_20120717关键词“假发”变成了“%BC%D9%B7%A2”,这是GBK编码。现在我做个测试,我新建两个页面,分别是A.aspx和B.aspx首先在A.aspx的Page_Load事件中写
Response.Redirect("B.aspx?q=%BC%D9%B7%A2");然后在B.aspx的Page_Load事件中写
Response.Write(Request.QueryString["q"]);在B.aspx中接收的参数Request.QueryString["q"]始终是乱码,随便怎么弄都是乱码我就是想请教一下,如何才能正确接收参数,就是接收的参数不是乱码,即“假发”。提前是Web.config中的globalization我不想改成GBK编码
Response.Redirect("B.aspx?q=%BC%D9%B7%A2");然后在B.aspx的Page_Load事件中写
Response.Write(Request.QueryString["q"]);在B.aspx中接收的参数Request.QueryString["q"]始终是乱码,随便怎么弄都是乱码我就是想请教一下,如何才能正确接收参数,就是接收的参数不是乱码,即“假发”。提前是Web.config中的globalization我不想改成GBK编码
你是说只能在web.config中改编码了?
用Request.ServerVariables["QUERY_STRING"] 自己分割参数。
类似于这样:
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(936); string paras = Request.ServerVariables["QUERY_STRING"]; if (!string.IsNullOrEmpty(paras))
{
string[] parsedParas = paras.Split(new char[]{'=','&', '?' });
for (int i = 0; i < parsedParas.Count(); i += 2)
{
string res = HttpUtility.UrlDecode(parsedParas[i+1], encoding);
Response.Write(res);
}
}