环境描述:自己创建一个sample.aspx页面,作为一个虚拟目录运行在SPS的_layouts目录下,所以这个页面的编码、其中传送内容的编码都是UTF-8的,该ASPX读取文档库的内容并转化为XML返回客户端,客户端脚本对该XML数据流进行处理,返回的XML流中会包含中文信息,客户端脚本利用这些信息生成新的HTTP请求(就是生成一个超级链接,URL通过XML数据构造),类似:http://server/sample.aspx?foldername=中文。sample.aspx文件接收到的foldername参数编程乱码了。尝试过在生成该XML数据流时进行编码,然后接收参数时进行解码,结果仍然是乱码,和不编码、解码是一样的

解决方案 »

  1.   

    在你的web.config中把编码 <globalization 
    requestEncoding="utf-8" 
    responseEncoding="utf-8" 
    /> 
    改为 <globalization 
    requestEncoding="gb2312" 
    responseEncoding="gb2312" 
    />
      

  2.   

    第二种方法: 首先在传递之前先编码:举例如下: 
    string xm=Server.URLEncode("张三"); 
    Response.Redirect("b.aspx?xm="+xm); 然后在接收页解码: 
    string xm = Server.URLDecode(Requext.querystring("xm")); 
      

  3.   

    还有一个要说的是,在我们制作邮件系统时,会有一个接收base64的问题,经常会产生乱码,我是这样解决的,不妨试试。代码如下: string encodedMail="邮件内容"; 
    byte[] barr=Convert.FromBase64String(encodedMail); 
    string decodedMail=System.Text.Encoding.GetEncoding("gb2312").GetString(barr); 
      

  4.   

    我的整个过程只有一个ASPX页面,所以你提供的第二种方法无用武之地,而我这个ASPX运行在SharePoint环境下,为保证在WebpartPage中正常显示,我不能使用GB2312编码,所以你提供的第一种方法不可行,我已经尝试了在ASPX中对发送到客户端的XML数据流进行编码,客户端传回参数时进行解码的工作,但是没有效果,常见的编解码方法:Server.UrlEncode、System.Text.Encoding.GetEncoding、Convert全部都试过了,没有一个能解决乱码问题