其中“小白鼠”没有百度的自定义引擎,前七个恰好都是,但是问题就出在这七个中间。
为了找到“令我出乎意料”的原因,博主用简单的关键字“什么”,以及“mjking”,“科学”分别作为下面的测试数据。
测试结果显示居然有三类——乱码、原文和空白页面三种:
首先是“乱码”类,即结果出现奇怪的乱码。
1、从“首页”,“新闻”,“会议”,以及“论文”页面分别搜索关键字“什么”,
结果则是ʲ,原本的“什么”(编码GB2312)居然变为乱码“ô”(编码UTF-8),搜索结果则是关于“0300”的结果
http://www.baidu.com/baidu?word=%CA%B2%C3%B4&ct=2097152&cl=3&si=.sciencenet.cn&ie=utf-8
而从“人才”页面搜索“什么”,只不过搜索结果的url地址多了一个服务器协议www,结果就变为是“抱歉,没有找到与“ʲô”相关的网页”(说明科学网没有使用到该字符的内容)。
http://www.baidu.com/baidu?word=%CA%B2%C3%B4&ct=2097152&cl=3&si=www.sciencenet.cn&ie=utf-8
先介绍一下搜索结果地址的参数含义(来自网上):
“word”:搜索关键字(也可用wd代替),这里的“%CA%B2%C3%B4”就是“什么”的gb2312编码,而“ô”对应的utf-8编码是“%C3%B4”,gb2312编码为“%3F”。
“ct”: ct--此值一般是一串数字,可能是搜索请求的验证码;
“si”:在限定的域名中搜索,比如想在新浪的站内搜索可使用参数si=sina.com.cn,要使这个参数有效必须结合ct参数一起使用。
“ie(Input Encoding)”:查询关键词的编码,缺省设置为简体中文,即ie=gb2312;但是这里都设为了utf-8
以上“乱码”类的地址参数的字符集编码都是“utf-8”。其中出现“0300”,是gb2312编码同样为“%3F”的“Ĭ”的html页面编码“Ĭ”。出现乱码乃是字符集设置错误导致的,或者说是为了国外的学者而“特意”设置的?
第二种是“空白”类,即在“原文”类的各个页面中结果正常,但是在“乱码”类中搜索“科学”时,自动跳转为百度搜索的首页(这肯定是百度的问题),很是不解啊。。
http://www.baidu.com/baidu?word=%BF%C6%D1%A7&ct=2097152&cl=3&si=.sciencenet.cn&ie=utf-8
第三种乃是“原文”类,即用英文/汉字关键字时,出现正确的结果。
1、从“博客”搜索关键字“什么”以及其他两个关键字,都显示出正确的结果。
http://www.baidu.com/baidu?word=%CA%B2%C3%B4&ct=2097152&cl=3&si=.sciencenet.cn&ie=gbk
2、从“群组”搜索关键字“什么”以及其他两个关键字,也都显示出正确的结果,但是结果地址有小小的改动。
http://www.baidu.com/baidu?tn=bds&cl=3&ct=2097152&si=bbs.sciencenet.cn&ie=gb2313&word=%CA%B2%C3%B4&searchsubmit=true
为了标示上的美观,将“tn”和“word”参数换个顺序,结果不发生变化。
http://www.baidu.com/baidu?word=%CA%B2%C3%B4&cl=3&ct=2097152&si=bbs.sciencenet.cn&ie=gb2313&tn=bds&searchsubmit=true
这里居然出现了gb2313,而不是gb2312!百度会自动使用gb2312。
参数含义(来自网上):
“tn:提交搜索请求的来源站点,这是百度与免费软件合作时的利益来源,举例来说我们使用的一些免费浏览器中所提供的百度搜索时,URL地址中都带有tn=内容,tn=后面的内容就是百度联盟的账号。如:Firefox的tn=suvion_dg(tn=suvion_4_dg),傲游的tn=myie2dg,The World的tn=suvion_4_pg,只要你使用了这些带有tn=的搜索,只要点击了其中的广告,提供该软件的浏览器就会从中赚取利益。搜索结果有个例外,当tn=baidulocal时,你可以得到一个无竞价无广告的百度搜索结果.”
“searchsubmit”这个没找到,抱歉,而且改成false结果也未有变化,不去深究。
由于字符集分别是“gbk”和“gb2312”,两者对于所测试的三个关键字都有相同的编码,故没有问题,但是存在着字符不同区域,gbk包含gb2312,并且数量远多于后者,故可以用gbk独有的“攍”测试:
http://www.baidu.com/baidu?word=%E6%94%8D&cl=3&ie=gb2312
上面的会出现乱码“鏀”,而下面的则能够正常显示出搜索结果。
http://www.baidu.com/baidu?word=%E6%94%8D&cl=3&ie=gbk
http://www.baidu.com/baidu?word=%E6%94%8D&cl=3&ie=utf-8
总结:本文针对在科学网上的搜索功能进行了试用,至于出现的问题进行了简单的总结,并大致描述了其相关“原理”。