这是我的客户页
http://www.zhekou4u.com/?action-category-catid-2   gbk编码
------
然后他要POST到我的页面
http://vip.tianker.com.cn/Index.aspx    utf-8编码
------------
本来在他那里POST过来我接收到的都是%uffff这样的乱码,在网上查询到解决方案是
<form method="post" action="http://vip.tianker.com.cn/Index.aspx" name="frmTrain" id="frmTrain" accept-charset="utf-8" onsubmit="document.charset = 'utf-8';">
然后这样可以正确的POST数据到我的页面,
但当POST到我页面后点击浏览器的返回时,他的网页乱码(IE这样,FireFox不会)
然后我想是因为:
因为他网页是gbk编码,我是utf-8编码
他那里post过来的话我们这边会乱码
所以我在post的时候把他的编码改成utf-8了,
这样post过来的数据就是正确的
但点返回的时候,因为他网页已经是utf-8,但他内容是gbk所以乱码那要如何解决浏览器点返回乱码的问题?

解决方案 »

  1.   

    本帖最后由 net_lover 于 2011-02-18 13:56:21 编辑
      

  2.   

    // 获取网页的HTML内容,指定Encoding
      static string GetHtml(string url, Encoding encoding)
      {
      byte[] buf = new WebClient().DownloadData(url);
      if (encoding != null) return encoding.GetString(buf);
      string html = Encoding.UTF8.GetString(buf);
      encoding = GetEncoding(html);
      if (encoding == null || encoding == Encoding.UTF8) return html;
      return encoding.GetString(buf);
      }  // 根据网页的HTML内容提取网页的Encoding
      static Encoding GetEncoding(string html)
      {
      string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
      string charset = Regex.Match(html, pattern).Groups["charset"].Value;
      try { return Encoding.GetEncoding(charset); }
      catch (ArgumentException) { return null; }
      }
      

  3.   

    你post过去的时候转成gbk他POST到你页面的时候转成UTF-8。2楼代码比较高级 收藏了。。
      

  4.   

    可以根据
    static Encoding GetEncoding(string html)
      {
      string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
      string charset = Regex.Match(html, pattern).Groups["charset"].Value;
      try { return Encoding.GetEncoding(charset); }
      catch (ArgumentException) { return null; }
      }
    获取encoding然后再判断撒。。
      

  5.   

    不是很明白,POST的地方是HTML的,不能写代码
    ---------------------------
    接收的时候如何转成我的utf-8?RE: %uffff解码就行了 String s = "%u3fee";
    ---------------
    不行,因为我那边不错输入的是什么数据,他得到的POST数据都为%uffff%uffff%uffff%uffff%uffff
      

  6.   

    %uffff就是些空格等非可见字符了,显示出来是一些框字