『尊米网』域名资讯平台

尊米首页 > 域名知识 > 域名选择/应用 >

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

在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等都已经提供。