高手进,URL传递中文参数?
程序语言C#从A页面传递两个参数到B页面,一个是参数是数字,一个参数是中文,如下——A页面:stringuserID=用户ID;stringname=用户name;Lin...
程序语言C#
从A页面传递两个参数到B页面,一个是参数是数字,一个参数是中文,如下——
A页面:
string userID=用户ID;
string name=用户name;
LinkButton1.PostBackUrl="uc/B.aspx?uid="+userID+"&name="+Server.UrlEncode(name);
B页面取值:
string userID=Server.UrlDecode(Request.QueryString["uid"]).ToString(); //这个正常
string name=Server.UrlDecode(Request.QueryString["name"]).ToString(); //这个有神经病
为什么中文就不行呢,有时候正常,有时候不正常?
我试了N多方法,把Server.UrlEncode改成HttpUtility.UrlEncode,把Server.UrlDecode改成HttpUtility.UrlDecode也一样,时而正常时而不正常。用HttpUtility的时候,指定为“GB2312”编码也时而正常时而不正常,指定为“UTF-8”编码也是时而正常时而不正常。太窝火,完完全全的一个神经病啊,哎,晕死。
不正常表现为,点击页面按钮时,地址栏出现res://ieframe.dll/dnserrordiagoff.htm
问题完全出在中文传参上,有浏览器无关,我所有的浏览器都用上了Opera\FF\TT\IE\360,一个样子。
也与VS2005自带测试服务器无关,在IIS中也是一个样子。
只要取消name这个中文参数,只传一个uid数字参数,就完全正常,可以断定,问题一定在中文参数上。
希望高手们不吝赐教,小弟感激不尽了! 展开
从A页面传递两个参数到B页面,一个是参数是数字,一个参数是中文,如下——
A页面:
string userID=用户ID;
string name=用户name;
LinkButton1.PostBackUrl="uc/B.aspx?uid="+userID+"&name="+Server.UrlEncode(name);
B页面取值:
string userID=Server.UrlDecode(Request.QueryString["uid"]).ToString(); //这个正常
string name=Server.UrlDecode(Request.QueryString["name"]).ToString(); //这个有神经病
为什么中文就不行呢,有时候正常,有时候不正常?
我试了N多方法,把Server.UrlEncode改成HttpUtility.UrlEncode,把Server.UrlDecode改成HttpUtility.UrlDecode也一样,时而正常时而不正常。用HttpUtility的时候,指定为“GB2312”编码也时而正常时而不正常,指定为“UTF-8”编码也是时而正常时而不正常。太窝火,完完全全的一个神经病啊,哎,晕死。
不正常表现为,点击页面按钮时,地址栏出现res://ieframe.dll/dnserrordiagoff.htm
问题完全出在中文传参上,有浏览器无关,我所有的浏览器都用上了Opera\FF\TT\IE\360,一个样子。
也与VS2005自带测试服务器无关,在IIS中也是一个样子。
只要取消name这个中文参数,只传一个uid数字参数,就完全正常,可以断定,问题一定在中文参数上。
希望高手们不吝赐教,小弟感激不尽了! 展开
4个回答
展开全部
1. webconfig 配置应用程序的编码;
system。web 配置节
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
2. 吧文件保存为该编码, 文件 》 高级保存选项;
3. 获取的时候不用解码;
string userID=Request.QueryString["uid"]; //这个正常
string name=Request.QueryString["name"];
system。web 配置节
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
2. 吧文件保存为该编码, 文件 》 高级保存选项;
3. 获取的时候不用解码;
string userID=Request.QueryString["uid"]; //这个正常
string name=Request.QueryString["name"];
展开全部
A页面:
string userID=用户ID;
string name=用户name;
LinkButton1.PostBackUrl="uc/B.aspx?uid="+userID+"&name="+Server.UrlEncode(name);
B页面取值:
string userID=Request.QueryString["uid"]; //这个正常
string name=Request.QueryString["name"]; //这里不需要Decode,HTTP协议的机制是,会自动DECODE 的
string userID=用户ID;
string name=用户name;
LinkButton1.PostBackUrl="uc/B.aspx?uid="+userID+"&name="+Server.UrlEncode(name);
B页面取值:
string userID=Request.QueryString["uid"]; //这个正常
string name=Request.QueryString["name"]; //这里不需要Decode,HTTP协议的机制是,会自动DECODE 的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
webconfig配置:
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" responseHeaderEncoding="gb2312" fileEncoding="gb2312" />
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" responseHeaderEncoding="gb2312" fileEncoding="gb2312" />
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编码就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询