Opera整合搜索引擎的确是相当人性化的设计,我们不必一遍又一遍花时间登陆那些引擎的首页,也不必像IE那样装上许多我们不知道会起什么作用的工具栏,就可以方便地使用搜索引擎。
如果你对Opera“原装”的搜索引擎感到不满(这种情况在我们非西方用户使用英文版时非常普遍),那么您完全可以自己定义Opera搜索引擎列表。
Opera整合引擎的列表及参数基本都在 search.ini文件。这个文件一般在opera安装目录下,是文本格式,可以用文本编辑器打开(包括UltraEdit,UEStudio05,Vim,记事本……)。就是说,我们如果要对搜索引擎列表进行修改,手段就是修改这个search.ini文件。
事实上已经有一个Opera search.ini Editor的软件可以通过图形界面编辑 search.ini 文件。但是作为对修改添加引擎的详细说明,手动编辑的具体介绍是十分必要的。
记住编辑前,先备份你的search.ini文件。
INIOpera Preferences version 2.0
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding
[Version]
File Version=6
[Search Engine 1]
Name=&Google
URL=""http://www.google.com/searchq=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8""
Query=
Key=g
Is post=0
Has endseparator=0
Encoding=utf-8
Search Type=0
Verbtext=17063
Position=-1
Nameid=0
[Search Engine 2]
……………………
[Search Engine 3]
……………………
………………………………………………
Opera Preferences version 2.0
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding
[Version]
File Version=6
[Search Engine 1]
……………………
[Search Engine 2]
……………………
[Search Engine 3]
……………………
1 [Search Engine 1]
2 Name=&Google
3 URL=""http://www.google.com/searchq=%s&num=%i""
4 Query=
5 Key=g
6 Is post=0
7 Has endseparator=0
8 Encoding=utf-8
9 Search Type=0
10 Verbtext=17063
11 Position=-1
12 Nameid=0格式很明了,前部分是属性名称,等号后面是设定的参数。
1.[Search Engine 1]
方括号里面最后的数字决定了引擎的在opera程序界面中的显示顺序,比如说你在“首选项”里看到的,还有右键单击个人栏点“显示搜索”也能看到。
需要注意的是,在英文版中的"Super Search"功能(官方翻译为“搜索各引擎”)中,使用的是[Search Engine1]和[Search Engine 2]所定义的引擎。而且作为[Search Engine 1]然后[Search Engine2]然后[Search Engine 3]…………
从小到大的顺序不能打乱,[]里面不能加空格,否则从打乱或错误处往后的引擎不会显示在程序界面中。
最多定义到50个搜索引擎(包括翻译引擎之类),就是[Search Engine 1]到[Search Engine 50],多了的程序不予识别。
2.Name=&Google
这里等号后面是程序界面中会显示的搜索引擎的名称,比方说搜索框。你当然可以随心所欲填写干扰别人正常使用,但最好你记得每个名称真正对应什么引擎。
这里的"&"符号代表符号后面紧接的一个字母是这个引擎的快捷键,但符号"&"不会在程序界面中显示出来。
拿&google当例子,"&"后面的"g"键就成了某些对话框中Google引擎的快捷键。而且在某些对话框中,Google的G字母下面会出现下划线。如果你不想(尤其在定义一些中文名称时),完全可以不要这个符号,只是少了快捷键,并不影响搜索效果。
3.URL=""http://www.google.com/searchq=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8""
这一行是定义搜索的核心部分,等号后面是搜索引擎的接受搜索请求的格式。
这里牵扯到一个问题,就是什么样的引擎可以被整合到Opera,这个问题在附录有说明。
这里存在两个变量(后面解释),就是%s和%i。%s代表你要搜索的字词,%i代表你需要的每页返回的搜索结果数。
这样再解释等号后面的网址就是:
http://www.google.com/searchq=要搜索的字符&sourceid=opera&num=每页返回结果数&ie=utf-8&oe=utf-8
比如你在搜索框输入Truth然后回车,在得到搜索结果以后,会发现地址栏变成:
http://www.google.com/searchq=Truth&sourceid=opera&num=0&ie=utf-8&oe=utf-8
和URL相比%s变成了Truth,%i变成了0。
这是因为,搜索引擎大同小异,要搜索,我们只需要定义两个值,一个是搜什么关键词,一个是每页显示多少结果。这两个值不可能每次搜索都一样(每天搜索自己名字自恋的人除外),所以我们把它定义成未知数x和y。开始提到的所谓变量,可以理解为未知数。未知数x就是%s,y就是%i。%s是个字符串,%i是个数字。格式规定,只能用%s,%i表示(符合C程序习惯),而不能用x、y,但基本一个意思。
我们在搜索的时候,在搜索框或个人栏上搜索框输入的字符就是%s的值;在右键搜索中,涂黑选定的字符是%s的值;而%i的值可以在首选项设定,如果没有设定过,它的值默认是0,也就是按网站默认的每页结果数显示。
所以在例子中地址栏出现了%s变成了Truth,%i 变成了0的变化。
至于&ie=utf-8&oe=utf-8和&sourceid=opera,说的是编码格式和用户识别,不用专门设定,也不是每个引擎都一样,你甚至可以把这些都删掉,不影响使用。
其实问号后面&符号之间的字符串位置可以颠倒,比方说:
[url=http://www.google.com/searchq=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8]http://www.google.com/searchq=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8[/url]
[url=http://www.google.com/searchq=%s&ie=utf-8&oe=utf-8&sourceid=opera&num=%i]http://www.google.com/searchq=%s&ie=utf-8&oe=utf-8&sourceid=opera&num=%i[/url]
效果是一样的。
注意:在Opera6.x中,%s必须放在%i的前面,不然用这个引擎搜索会导致程序崩溃。
4.Query=
只有当行6是Is post=1的时候,这一行等号后面才需要填东西。
Google和大部分引擎的行6是Is post=0,所以后面留空,此时留空不留空都一样,程序不读这一行。
如果行6是Is post=1,那么这里按格式填URL后面需要提交的那部分。
拿Amazon.de来说
行3和行4就应该是:
URL=http://www.amazon.de/exec/obidos/search-handle-form/ Query=url=index%3Dbooks-de&field-keywords=%s&size=%i
当你搜索的时候,Query中的内容将不会显示在地址栏,搜索完了地址栏还是http://www.amazon.de/exec/obidos/search-handle-form/
5.Key=g
这是设定关键字的地方,比如这里设定了g做google的关键字,那么在地址栏输入“g Truth”就是在搜索"Truth"。
只有在Linux里面,大小写字母不一样,Key=g和Key=G是不一样的。在Windows里面,大小写字母一样,可以用单词作关键字,比方说把搜狐引擎添加以后设定Key=sohu,你可以在地址栏输入“sohu fishest”来搜索“Fishest”这个词。
如果这些引擎关键字有一样的,那么关键字就等于没有,谁用都无效。
如果关键字留空了,只有"Key="那么这个引擎以及排在后面所有的引擎都不能直接显示在程序界面例如个人栏上。这个特性实现了隐藏后面众多翻译引擎的功能,但也可能是一个Bug。
6.Is post=0
当引擎用HTTP GET取得关键词的时候,Is post=0;当引擎不允许GET查询需要post关键词,Is post=1,这种情况比较少见。
7.Has endseparator=0
这个参数有两个值,表示显示引擎列表的时候,这个引擎后面有没有分隔符,0是没有,-1是有。
这个可以从搜索框拉出的下拉菜单看到。也可以右键单击个人栏-显示搜索。
8.Encoding=utf-8
搜索引擎用的编码格式。这里Google用的是UTF-8。在后文和附录里有详细说明。
9.Search Type=0
一些固定的搜索类型代表含义
Search Type 2: 搜索各引擎
Search Type 12: 页内搜索 (搜索页面中的文字)
Search Type 50: 字典
Search Type 51: 百科全书
Search Type 52: 货币转换
Search Type 100: 英语翻法语
Search Type 100 到 116: 翻译XX语为XX语
Search Type 117: 西班牙语翻法语- 下面是按照官方文件分析出的结果,并没有被严格规定,但在编辑时推荐使用:
Search Type 3:电子商务/产品搜索
Search Type 5:软件下载
Search Type 7:图像搜索
Search Type 8:视频搜索
Search Type 9:音乐搜索
Search Type 10:讨论组
Search Type 13:新闻搜索- 下面是非官方定义的搜索类型,推荐使用:
Search Type 11:Flash搜索
Search Type 14:歌词搜索- Search Type可以重复,一般你加入的搜索引擎可以设Search Type=0。
- 当然你也可以用这个设定定义个人栏上每个搜索框后面的小图标,Search Type=X用buttons.ini文件SearchX条目下的图标。这样你能用最多16个图标。[Search00]到[Search15]。一个图标可以重复使用。
10.Verbtext=17063
搜索引擎在程序界面显示的标题
例如各处搜索框没有被激活的时候。17063对应语言文件中的字符串,17063在中文语言包就是:"搜索 %s"。
11.Position=-1
当搜索引擎不在个人栏显示的时候,Position=-1;当此搜索引擎在个人栏显示,Position=它的位置。
12.Nameid=0
它用来取代Name的值,后面对应一个语言包里的字符串,比如说&Google就是Nameid=17171,这里是0,程序界面上就显示Name的引擎名称。
关于search.ini文件本身:
1.如果你没有search.ini文件,或者这个文件是空的,Opera将只显示Google,Alltheweb和页内搜索三项。(可能是个Bug)
2.如果你的search.ini文件里加了超过三个搜索引擎,Opera就不会自动增加其他内置引擎(比如页内搜索)。
3.每次修改完个人栏关闭Opera的时候,Opera会修改Search.ini文件。不要在Name和Nameid上作修改,会出现显示不正常的BUG。
那么我们怎么添加搜索引擎呢?
下面以添加百度为例讲解。
1.判断百度能不能被添加。
到百度首页搜索一个词,用“孤波”作例子。地址栏得到:
http://www1.baidu.com/baiduword=%B9%C2%B2%A8
很显然,我们看到简单的xx=xx的结构,而且很明显word是指关键词,等号后面的%B9%C2%B2%A8(汉字编码后一般显示成几个百分号跟16进制数间隔排列的形式)是汉字“孤波”的编码后的值,就是说这个位置显然就是%s。
我们还可以判断出百度是使用GET来获取关键词的,可以被Opera整合,而且Is post=0。
如果地址栏是http://………….ger1或http://…………/……/之类其他没有xx=xx结构的,一般是Post得到关键词,可以通过分析网页源码得到url和query信息。
2.得到URL=http://www1.baidu.com/baiduword=%s
3.辨别百度汉字编码格式(附录有字符集的说明)。
如果你搜索英语的话,字符即不那么重要,几乎所有字符即都和英语字符集兼容。而目前汉语字符集流行的是UTF-8和GB-2312,Opera支持gbk字符集,gbk兼容GB-2312,所以中文引擎选字符集就是选gbk和UTF-8。
一个简单的判断方法是,在gbk中一个汉字编码对应%XX%XX--两个百分号两个16进制数,而UTF-8里面则是每个汉字对应%XX%XX%XX--三个百分号三个十六进制数。
我们用两个字得到%B9%C2%B2%A8,可判断出应该用gbk编码。
综合以上信息,关闭Opera,修改search.ini的[Search Engine 2]条目为:
Name=百度
URL=""http://www1.baidu.com/baiduword=%s""
Query=
Key=b
Is post=0
Has endseparator=0
Encoding=gbk
Search Type=1
Verbtext=17063
Position=-1
Nameid=0(这里改了原来Search Engine 2,你可以在原来基础上添加,但是编码“2”也要相应改变)
启动Opera,可以使用了。
附录:
1.什么样的搜索引擎可以被Opera整合?
只有用 HTTP GET 和post关键词方式搜索的引擎才能被整合,简单理解是:只有能接受浏览器地址栏某种格式的搜索请求的引擎才能被整合。
2.有关变量的知识
前面有一个百分号的字母,表示这是一个变量,常见的Opera能识别变量有:
%u = 当前显示文档的url
%t = 选定文本
%s = 来源于当前显示文档的字符串
%c = 剪贴版内容
%i = 显示的搜索结果个数 (在search.ini里)
%l = 链接,具体指代不详
3.汉字编码问题。- 我们输入的字符存起来都是一个一个的编码,而字符集就是每个字所对应编码的标准。
- 开始的时候只有Ascii编码就是ANSI的ASCII字符集,ANSI一般就是标准的意思。它是用8个bit表示一个字符,一共128个,就是ascii码表上所有的,因为一个字节有8个bit组成,所以第一位规定成0。
- 后来扩展了,第一位可以用1,这时候用8bit就是一个字节代表了,比原来多了制表符之类的特殊符号,一共256个。
- 世界上不光是英语。所以,每个语种都在ASCII基础上进行了自己的扩展,加入自己字符集。这些ANSI标准派生出来的,字符集被统称为ANSI字符集,正式名称应该是MBCS具体什么缩写我忘了。但是他们都兼容ASCII那127个字符,用大于128的编码作为一个头字节就是LeadingByte,然后跟在头字节后面的第2或3个字符与头字节一起作为辨认字符集的标志。
- GB-2312/3就是中国8几年定的一个比较广泛的ansi汉字字符集。
- 由于每种语言都制定了自己的字符集,导致最后存在的各种字符集实在太多,在国际交流中要经常转换字符集非常不便。
- 因此,提出了Unicode字符集,它固定使用16 bits(两个字节、一个字)来表示一个字符,共可以表示65536个字符。
- 将世界上几乎所有语言的常用字符收录其中,方便了信息交流。标准的Unicode称为UTF-16。后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。
- 注意UTF-8是编码,它属于Unicode字符集。Unicode字符集有多种编码形式,而ASCII只有一种,大多数MBCS(包括GB-2312)也只有一种。
- 目前流行的汉字编码是gb-2312和utf-8,gbk是兼容gb-2312的一种编码标准。
Opera "search.ini"的标准格式
[Search Engine #] -----搜索引擎序号
Name= -----显示在Opera的Search Bar中的搜索引擎的名称
URL= -----搜索引擎的网址
Query=
Key= -----搜索引擎的快捷键,用于在Opera的地址栏进行快捷搜索
Is post= -----数值一般是“0”
Has endseparator=
Encoding= -----搜索引擎使用的字符集
Search Type=
Verbtext= -----数值一般是“17063”
Position= -----数值一般是“-1”
Nameid= -----数值一般是“0”
联系客服