IE7下中文域名不能正确解析的解决

如果你的域名是:http://博客园.cnblogs.com
在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并注册吧!!(有使用限制)

使用方法:
// <summary>
    /// IE7下中文域名解决
    
/// </summary>
    
/// <param name="str"></param>
    
/// <returns></returns>
    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等都已经提供

相关资源:http://www.cnnic.net.cn/html/Dir/2003/10/29/1112.htm 中文域名在线转码
Tag标签: punycode
posted @ 2008-02-26 22:54 overred 阅读(555) 评论(1)  编辑 收藏

  回复  引用    
#1楼 2008-03-14 20:23 | 北京SEO网站优化 [未注册用户]
国外有代码啊
你直接搜punycode c#就有了啊
我下过,rfc文档里面有punycode的定义,你也可以自己写个

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-02-26 22:58 编辑过
 
历史上的今天:

另存  打印