您的位置:首页 > Web前端 > HTML

两个不同编码的页面之间的参数传递( 解码 )

2008-09-06 17:02 375 查看
今天同学问了个问题,说是两个不同编码的页面之间参数传递的出现乱码.他是在config文件里配置 <globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312"/>  配置页面的编码的,整个项目都是gb2312的编码.但是从html页面传递的参数是utf-8编码例如<html><body><a href="default.aspx?name=xiage" /></body><html>
接收参数的页面是aspx页面,编码是gb2312然而接收的数据Request.Params["name"].ToString();是乱码;
就好像直接从utf-8直接转化成gb2312的一样,肯定会出现乱码的.试了   string str = Request.Params["name"].ToString();       byte[] bts = Encoding.GetEncoding("gb2312").GetBytes(str);       string ss=Encording.getEncoding("utf-8").GetString(bts);
结果ss是乱码,接个编码改了好多次仍是乱码.
到网上查查资料没法想有相关的问题,但是发现了 HttpUtility这个类,以前没有用过,这个类是解决URL编码相关问题的,有个UrlDecode(,)方法.这个方法是解码URL中的字符串的.于是可以这样写:
       string str = Request.Params["name"].ToString();       byte[] bts = Encoding.GetEncoding("gb2312").GetBytes(str);       string ss = System.Web.HttpUtility.UrlDecode(bts,System.Text.Encoding.GetEncoding("utf-8"));       果然 ss 获取到了正确的值.

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string html byte url