url 中文参数乱码问题 小探

本文详细介绍了JavaScript和ASP.NET中处理URL编码的方法,包括encodeURI、decodeURI及HttpUtility.UrlEncode等函数的使用,并讨论了不同编码格式下可能出现的问题及解决方案。

js函数:encodeURI、decodeURI 是按照utf-8编码的,和webconfig里配置的编码方式无关(因为js函数不解析webconfig),没有直接的js方法可以做gb2312编码。

asp.net函数:Request.QueryString["key"] 和 Response.Redirect("WebForm1.aspx?key=中文")  会对中文字符自动编码,编码方式按照webconfig中的配置,默认为“utf-8”,可以对单个页面设置编码。
服务器端编码、解码:HttpUtility.UrlEncode(); HttpUtility.UrlDecode();默认编码方式为“utf-8”,可以由参数指定具体编码格式。
要对url参数做不同于该页面编码格式的解码,不能调用Request.QueryString["key"] ,因为它对自动解码不能指定别的编码格式,正确的方法是:NameValueCollection parames = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding("utf-8 或其他格式"));  string v = parames.Get("key");

前端方法window.open(url)、<a>方式,不会对中文自动编码。

url参数中可能出现乱码的情况有:
1、被访问的页面为 gb2312 编码,调用的时候用js方法encodeURI()做了编码;
2、js方式调用时,中文参数没有做编码有时候会出现乱码,可能跟环境配置有关。

通常的方案:
1、编码方式采用“utf-8”(asp.net默认),对url中的中文参数做编码(默认编码),编码的目的主要是为了防止因浏览器版本不同而可能引起的乱码。

页面乱码:
通常原因是页面的编码和浏览器编码不一致。浏览器会根据页面的编码来选择相应的编码,当找不到该编码时就会乱码。

转载于:https://www.cnblogs.com/chenjh/archive/2010/10/10/1847276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值