首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 实用技巧 > 正文
  • IE7中文域名不能正确解析的解决
      2008-2-28  来源:博客网  编辑:Jsbulo  热度:

    在IE6下访问是没任何问题的,不过在IE7下就会“革皮”!

    因为伟大的IE7为了解决中文域名(不仅仅是中文域名),特意增加一个编码方式:punycode
    如果你在IE7下访问http://博客园.cnblogs.com,并在你的HttpModule里捕捉HttpApplication.Request.Url,发现原型是:
    http://xn--9kr06fj5e.cnblogs.com
    此时如果你想要得到的“博客园”实际是“xn--9kr06fj5e”。
    这样如果二级(或其他级域名)中如果有中文如何正确接受到呢?查下msdn,也没发现c#有直接从punycode到汉字的解码方法,
    不过有个东东可以暂时解决一下:
    下载:http://www.motobit.com/dlldownload/ScptUtl.exe并注册吧!!(有使用限制)

    使用方法:
    //
    /// IE7下中文域名解决
    ///

    ///
    ///
    string getCode(string str)
    {
    string code = str.Trim();
    try
    {
    ScriptUtilities.ByteArray ba = new ScriptUtilities.ByteArray();
    ba.CharSet = "gb2312";
    ba.Punycode = str.Trim().Replace("xn--", "");
    code = ba.String;
    }
    catch
    {
    //出错
    }

    return code;
    }
    这样就能把在IE7下接受到的“xn--9kr06fj5e”转换为“博客园”,暂时解决了。。。


    不知那位朋友有从punycode到gb2312 c#算法?谢谢。
    也不知道.net 3.x为什么不提供此解码方式? python等都已经提供