asp.net2统一搜索引擎关键字编码
View二期开发正式启动,一开始就碰到了麻烦事,因为在统计模块中,需要得到来源搜索链接的关键字,所以一开始就用正则把关键字部分匹配出来,然后用自带的 Uri.UnescapeDataString() 将Urlcoding转换为文字。 本来一切都很顺利,结果将百度,网易搜索加到规则里面,就开始报错了。我猜想可能是和编码有关系,因为Google一向都是UTF-8,国内的网站大多偏向使用GB2312,所以出现这个问题我还不是很担心。 哪里知道,这个问题的严重性,让我差点对程序算法的研究失去信心。因为今天听到有个人说我胆子好大,居然敢把所有链接的事件给改掉了,万一还有相同事件,那么就会出严重的问题。我一向认为我还是个比较心细的人,在我做那件大胆的事情前,我是仔细地咨询过有没有相同事件存在,在得到肯定的答复后,我才开始做的。代码虽然不多,但是我敢说里面能考虑到的,不能考虑到的错误,我基本已经都做到。 回到正题,在网上一搜索,发现asp.net这方面的资料真的是太少了,然后看了看ASP和PHP的,发现做法十分复杂,而且还容易出错,甚至还要建一个gb2312到utf-8的编码对照表。 我坚信微软一定会给出一个完美的解决方案,于是开始查MSDN,从Encoding入手,发现存在转换编码的方法。但是问题又出现了,因为我得到的是URL形式的字符串,现在还不知道这个字符串是属于utf-8的,还是gb2312的,所以不能使用UnescapeDataString转换成文字后再进行转码,因为这样马上会报错。 于是开始分析gb2312和utf-8的编码原理,发现他们在.net里是存在关联性的,一个是2位编码,一个是三位编码,于是我试者将gb2312的编码进行分解,将每2位作为2个16进制的byte类型放入一个byte数组里面,然后通过正常的转码方式转为utf-8的byte类型,然后放入char里面,最后转成正常文字。 结果马上就揭晓了,居然成功了,然后再接再厉,写了一个搜索引擎类型判断的方法,于是一切就这么给解决。 下面给出代码,希望可以帮到有用的朋友: 程序代码
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |