Oldest known version of this page was edited on 2005-10-08 15:12:33 by Jakub81 []
Page view:
下面的文章是手動編輯Search.ini最全面的中文文章,建議中高級用戶閱讀。
作者:Truth
Opera整合搜索引擎的確是相當人性化的設計,我們不必一遍又一遍花時間登陸那些引擎的首頁,也不必像IE那樣裝上許多我們不知道會起什麼作用的工具欄,就可以方便地使用搜索引擎。
如果你對Opera“原裝”的搜索引擎感到不滿(這種情況在我們非西方用戶使用英文版時非常普遍),那麼您完全可以自己定義Opera搜索引擎列表。
Opera整合引擎的列表及參數基本都在 search.ini 文件。這個檔一般在opera安裝目錄下,是文本格式,可以用文本編輯器打開(包括UltraEdit?,Vim,記事本……)。就是說,我們如果要對搜索引擎列表進行修改,手段就是修改這個search.ini文件。
事實上已經有一個Opera search.ini Editor的軟體可以通過圖形介面編輯 search.ini 文件。但是作為對修改添加引擎的詳細說明,手動編輯的具體介紹是十分必要的。
記住編輯前,先備份你的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=3 [Search Engine 1] Name=&Google URL=""http://www.google.com/search?q=%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
部分叫做檔頭,它說明的資訊很簡單,檔是opera屬性檔2.0版,用UTF-8編碼存儲,在Opera運行時不要編輯該檔。檔頭對搜索引擎列表沒有影響,只是對整個檔一個簡單的介紹。任何操作都儘量不要修改。
檔頭下面的結構是:
[Version] File Version=3 [Search Engine 1] …………………… [Search Engine 2] …………………… [Search Engine 3] ……………………
那麼,顯然[Version]標題下面是說列表格式的版本,一般不要更改。而剩下的每個[Search Engine 數字]標題都對應一個搜索引擎。我們將通過修改此類標題下面的各項參數來定義一個搜索引擎。
以默認的第一個搜索引擎google為例,分別講述每個參數的作用:(為了方便講述,我在前面加了行號,在檔裏面是不應該有的)
1 [Search Engine 1] 2 Name=&Google 3 URL=""http://www.google.com/search?q=%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 Engine 1]和[Search Engine 2]所定義的引擎。而且作為[Search Engine 1]然後[Search Engine 2]然後[Search Engine 3]…………從小到大的順序不能打亂,[]裏面不能加空格,否則從打亂或錯誤處往後的引擎不會顯示在程式介面中。
最多定義到50個搜索引擎(包括翻譯引擎之類),就是[Search Engine 1]到[Search Engine 50],多了的程式不予識別。
2.Name=&Google
這裏等號後面是程式介面中會顯示的搜索引擎的名稱,比方說搜索框。你當然可以隨心所欲填寫干擾別人正常使用,但最好你記得每個名稱真正對應什麼引擎。
這裏的"&"符號代表符號後面緊接的一個字母是這個引擎的快捷鍵,但符號"&"不會在程式介面中顯示出來。拿&google當例子,"&"後面的"g"鍵就成了某些對話方塊中Google引擎的快捷鍵。而且在某些對話方塊中,Google的G字母下面會出現下劃線。如果你不想(尤其在定義一些中文名稱時),完全可以不要這個符號,只是少了快捷鍵,並不影響搜索效果。
3.URL=""http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8""
這一行是定義搜索的核心部分,等號後面是搜索引擎的接受搜索請求的格式。這裏牽扯到一個問題,就是什麼樣的引擎可以被整合到Opera,這個問題在附錄有說明。
這裏存在兩個變數(後面解釋),就是%s和%i。%s代表你要搜索的字詞,%i代表你需要的每頁返回的搜索結果數。
這樣再解釋等號後面的網址就是:
http://www.google.com/search?q=要搜索的字元&sourceid=opera&num=每頁返回結果數&ie=utf-8&oe=utf-8
比如你在搜索框輸入Truth然後回車,在得到搜索結果以後,會發現地址欄變成:
http://www.google.com/search?q=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,說的是編碼格式和用戶識別,不用專門設定,也不是每個引擎都一樣,你甚至可以把這些都刪掉,不影響使用。
其實問號後面&符號之間的字串位置可以顛倒,比方說:
http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8
http://www.google.com/search?q=%s&ie=utf-8&oe=utf-8&sourceid=opera&num=%i
效果是一樣的。
注意:在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可以重複,一般你加入的搜索引擎可以設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/baidu?word=%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/baidu?word=%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/baidu?word=%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,可以使用了。
只有用 HTTP GET 和post關鍵字方式搜索的引擎才能被整合,簡單理解是:只有能接受流覽器位址欄某種格式的搜索請求的引擎才能被整合。
前面有一個百分號的字母,表示這是一個變數,常見的Opera能識別變數有:
%u = 當前顯示文檔的url
%t = 選定文本
%s = 來源於當前顯示文檔的字串
%c = 剪貼版內容
%i = 顯示的搜索結果個數 (在search.ini裏)
%l = 鏈結,具體指代不詳
我們輸入的字元存起來都是一個一個的編碼,而字元集就是每個字所對應編碼的標準。
開始的時候只有Ascii編碼就是ANSI的ASCII字元集,ANSI一般就是標準的意思。它是用8個bit表示一個字元,一共128個,就是ascii碼表上所有的,因為一個位元組有8個bit組成,所以第一位規定成0。
後來擴展了,第一位可以用1,這時候用8bit就是一個位元組代表了,比原來多了跳位字元之類的特殊符號,一共256個。
世界上不光是英語。所以,每個語種都在ASCII基礎上進行了自己的擴展,加入自己字元集。這些ANSI標準派生出來的,字元集被統稱為ANSI字元集,正式名稱應該是MBCS具體什麼縮寫我忘了。但是他們都相容ASCII那127個字元,用大於128的編碼作為一個頭位元組就是Leading Byte,然後跟在頭位元組後面的第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的一種編碼標準。
[Search Engine #] -----搜索引擎序號 Name= -----顯示在Opera的Search Bar中的搜索引擎的名稱 URL= -----搜索引擎的網址 Query= Key= -----搜索引擎的快捷鍵,用於在Opera的位址欄進行快捷搜索 Is post= -----數值一般是“0” Has endseparator= Encoding= -----搜索引擎使用的字元集 Search Type= Verbtext= -----數值一般是“17063” Position= -----數值一般是“-1” Nameid= -----數值一般是“0”
搜索引擎的網址
搜索引擎使用的字元集
CategoryOpera
CategoryTutorial
CategoryChinese