一个网站,采用UTF-8编写
web.config
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
上边这一行不能改变,否则影响的程序太多。问题如下:有一个接收用户查询关键词的页面,比如查询“中文”这个词
如果查询的关键字,也进行了编码处理
如下
search.aspx?keyword=%E4%B8%AD%E6%96%87
这个keyword的值也是“中文”这个值,不过是用了UTF-8编码以后
在程序中通过 Request["keyword"] 可以正确接收到“中文”这个值但是如果在地址栏中输入
search.aspx?keyword=中文
那么接收的就是乱码请问怎么处理才能保证
search.aspx?keyword=%E4%B8%AD%E6%96%87
search.aspx?keyword=中文这两种方式,我接收到的keyword,最后都能处理成“中文”这个值谢谢大伙!

解决方案 »

  1.   

     string ss = Server.UrlDecode("search.aspx?keyword=%E4%B8%AD%E6%96%87");
                // "search.aspx?keyword=中文" string
      

  2.   

    谢谢您的回答,但是您说的和我问的好像不是一个东西。以下是浏览器处理这个网页时的基本流程1:系统取默认编码的顺序为:http请求头->globalization配置节点-》默认UTF-82:在Url直接输入中文时,不同浏览器处理方式可能不同如:ie不进行编码直接提交,firefox对url进行gb2312编码后提交(所以如果用firefox不会出现乱码的问题,在浏览器内部就已经自动识别然后自动编码了)。3:对于未编码“中文字符”,使用Request.QueryString时内部调用HttpUtility.UrlDecode后,由gb2312->utf-8时,如果查不到该中文字符,默认转成"%ufffd",因此出现不可逆乱码。现在是如果用IE浏览器的话,我顶部问的就会出现乱码的问题,请问应该怎么解决。
    谢谢。
      

  3.   

    因为用户在网址栏中改变参数值的时候,并不知道这个值的UTF-8的编码是多少,只知道汉字怎么输入我说的是在网址栏中输入
    search.aspx?keyword=%E4%B8%AD%E6%96%87
    search.aspx?keyword=中文
    我在接收端都能接收到值,然后怎么处理接收到的值,最后转化为“中文”这个值有点绕口,呵呵
      

  4.   

    那只有自己判断一下了,如果获取的是%E4%B8%AD%E6%96%87这种格式的字符串就解码,否则就取原样的字符串。
      

  5.   

    如2楼所示3:用IE浏览器浏览的时候,对于未编码“中文字符”,使用Request[]时,自动的内部调用HttpUtility.UrlDecode后,由gb2312->utf-8时,如果查不到该中文字符,就出现不可逆乱码。好像ie+asp.net+IIS处理这个问题时,给我的感觉,还没有编码,就解码,自然出现就是乱码,不知道有没有什么解决的好办法我在用Request["keyword"]的时候接收到的值就已经是乱码了。
      

  6.   

    http://www.baidu.com/s?wd=中文
    http://www.baidu.com/s?wd=%D6%D0%CE%C4在地址栏中输入百度上边的两个查询网址,百度都能识别我相信百度可以
    asp.net+IIS
    也应该可以谢谢大家继续帮忙
      

  7.   

    举个例子,下面是我接收到search.aspx?keyword=中文
    ����
    keyword的值,是四个小方块怎么能转换到“中文”这个字符串(几乎是不可能的事),我感觉可以重写request这个方法,或者用其他的方法得到keyword的值,请继续关注