ASP.NET URL 中文参数
ShowParm.aspx:<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"/>地址栏中直接...
ShowParm.aspx:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
地址栏中直接输入:
http://localhost:6391/WEB/PARM/ShowParm.aspx?parm=中文参数
Request.QueryString["parm"].ToString()获取到的是乱码。
当点击页面中的一个服务器端按钮回发后,地址栏变为:
http://localhost:6391/WEB/PARM/ShowParm.aspx?parm=%ufffd%ufffd%ufffd%u0132%ufffd%ufffd%ufffd
用javascript可以获取地址栏中的中文参数的,但我想知道怎么能让Request.QueryString["parm"]也能获取到这个参数,而不是乱码。
回发一下页面后,地址栏中的中文参数用了哪种编码?这其中的原理是什么?本人乃初学者,望哪位高人给指点一下!谢谢。
就这么多分了,全给了吧,希望高人不要嫌少。
直接给它传中文参数,显示不出来的真正原因是什么。
实际做的时候,是会编码之后再请求的。
贰壹肆伍拐
说的内容我之前已经了解。我想了解是原理方面的,能解释一下么。
不是加密解密,是编码解码。不要算法,说一下用的是哪种码就行了,大致流程讲一下就OK了。
本人初学者,对这方面所知甚少,我的理解是,把URL回发到服务器的时候,应该是把URL给编码了的。好象有什么 UTF-8,GB2312什么的,不是太懂。
服务器端在解析这个URL的时候,解码方法和编码时不一致,所以导致了参数乱码,不能正确的解析出来。
如果用javascript把URL中的参数给escape的话,服务器读Request.QueryString["parm"]就不会有乱码了。
不知道是不是这回事?
能把这个过程稍讲一下吗?
感谢 贰壹肆伍捌 的热心回答!!!
IE -> 工具 -> Internet选项 -> 高级 -> 总是以 UTF-8 发送(需要重启动)(在最下面)
回发的时候,是用了UTF-8编码格式对URL进行编码了的。
算了给分吧,自已再慢慢找资料看吧。
谢谢贰壹肆伍捌兄。 展开
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
地址栏中直接输入:
http://localhost:6391/WEB/PARM/ShowParm.aspx?parm=中文参数
Request.QueryString["parm"].ToString()获取到的是乱码。
当点击页面中的一个服务器端按钮回发后,地址栏变为:
http://localhost:6391/WEB/PARM/ShowParm.aspx?parm=%ufffd%ufffd%ufffd%u0132%ufffd%ufffd%ufffd
用javascript可以获取地址栏中的中文参数的,但我想知道怎么能让Request.QueryString["parm"]也能获取到这个参数,而不是乱码。
回发一下页面后,地址栏中的中文参数用了哪种编码?这其中的原理是什么?本人乃初学者,望哪位高人给指点一下!谢谢。
就这么多分了,全给了吧,希望高人不要嫌少。
直接给它传中文参数,显示不出来的真正原因是什么。
实际做的时候,是会编码之后再请求的。
贰壹肆伍拐
说的内容我之前已经了解。我想了解是原理方面的,能解释一下么。
不是加密解密,是编码解码。不要算法,说一下用的是哪种码就行了,大致流程讲一下就OK了。
本人初学者,对这方面所知甚少,我的理解是,把URL回发到服务器的时候,应该是把URL给编码了的。好象有什么 UTF-8,GB2312什么的,不是太懂。
服务器端在解析这个URL的时候,解码方法和编码时不一致,所以导致了参数乱码,不能正确的解析出来。
如果用javascript把URL中的参数给escape的话,服务器读Request.QueryString["parm"]就不会有乱码了。
不知道是不是这回事?
能把这个过程稍讲一下吗?
感谢 贰壹肆伍捌 的热心回答!!!
IE -> 工具 -> Internet选项 -> 高级 -> 总是以 UTF-8 发送(需要重启动)(在最下面)
回发的时候,是用了UTF-8编码格式对URL进行编码了的。
算了给分吧,自已再慢慢找资料看吧。
谢谢贰壹肆伍捌兄。 展开
1个回答
展开全部
web.config中修改下面内容:(中文参数最好使用gb2312)
<globalization requestEncoding="gb2312" resp culture="zh-CN" fileEncoding="gb2312" />
在cs文件里传参的时候用UrlEncode:
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name));
接参的时候用UrlDecode:
Response.Write(Server.UrlDecode(Request.QueryString["Name"]));
脚本儿里传参的时候用escape:
location.href = "B.aspx?Name="+escape(Name);
接参的时候仍然用UrlDecode:
Response.Write(Server.UrlDecode(Request.QueryString["Name"]));
-----------
昂...这个哈..原理啊..你是指加密解密的原理..??
这个我还真不知道怎么说...就像 abc.ToString()似的..大家都知道是用来转换字符串的..可是几个人能说清楚ToString()内部原理....- -..
--------------
嗯.你理解的大致差不多.就是在传参的时候.编码不一样才会导致乱码.所以经过escape加密.接收的时候通过decode解密.就不会出现中文乱码的问题了.
<globalization requestEncoding="gb2312" resp culture="zh-CN" fileEncoding="gb2312" />
在cs文件里传参的时候用UrlEncode:
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name));
接参的时候用UrlDecode:
Response.Write(Server.UrlDecode(Request.QueryString["Name"]));
脚本儿里传参的时候用escape:
location.href = "B.aspx?Name="+escape(Name);
接参的时候仍然用UrlDecode:
Response.Write(Server.UrlDecode(Request.QueryString["Name"]));
-----------
昂...这个哈..原理啊..你是指加密解密的原理..??
这个我还真不知道怎么说...就像 abc.ToString()似的..大家都知道是用来转换字符串的..可是几个人能说清楚ToString()内部原理....- -..
--------------
嗯.你理解的大致差不多.就是在传参的时候.编码不一样才会导致乱码.所以经过escape加密.接收的时候通过decode解密.就不会出现中文乱码的问题了.
Storm代理
2023-08-29 广告
2023-08-29 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询