1 頁 (共 2 頁)

[問題]UTF-8 成功但搜尋中文卻失敗

發表於 : 2004-10-06 23:14
DearHoney
我的環境:Windows 2000 IIS + PHP 4.3.7 + MySQL 4.0.18。

根據大家的描述,我下載了 phpBB 2.0.10 與繁中、簡中、日文的 language & template,經過 ConvertZ 的轉換,並且修改了各語系中 lang_main.php 中的預設語系均改為 UTF-8,現在,我可以成功的用 UTF-8 切換各個不同的語系,發表任意語言且均能正常顯示。檢查 MySQL 中的發言部分,均為 UTF-8 格式。

但是,我發現輸入中文去搜尋,什麼都搜尋不到,僅能搜尋純英文而已。

我是否有遺漏的地方呢?

發表於 : 2004-10-07 00:21
DearHoney
補充,我也嘗試過去修改 includes/functions_search.php,將其中 split_words 這個 function 中的給 comment 的段落給解除,也是一樣沒有幫助,仍然無法搜尋中文部分,均是什麼都找不到。

發表於 : 2004-10-07 00:36
ayaya
不能幫你解決問題…\r

不過想了解一下:

1.你有做多國語言修正嗎?

2.你寄出去的EMAIL,標題和內容會變亂碼嗎?

3.你想不想裝看看這個外掛?

下載:
http://www.ecardmax.com/richedit/phpbb/ ... ic.php?t=4

測試:
http://www.ecardmax.com/richedit/phpbb/ ... wtopic&f=1

4.可以說說你成功將論壇轉成UTF-8的過程嗎?

發表於 : 2004-10-07 08:43
DearHoney
ayaya 寫:1.你有做多國語言修正嗎?
可能沒有,我再找找看大家之前的發言,看一下多國語言修正是什麼......
ayaya 寫:2.你寄出去的EMAIL,標題和內容會變亂碼嗎?
尚未測試過。
ayaya 寫:4.可以說說你成功將論壇轉成UTF-8的過程嗎?
就與好幾個討論串內講的是一樣的方式。

發表於 : 2004-10-07 09:00
DearHoney
我爬了幾篇關於 UTF-8 的發言,根據大家所描述,徹底使用 UTF-8 之後,應該不用再去做兩年前大家在討論的「多國語言修正」,好像大家做好了 UTF-8 後,多國語言共存的問題就已經徹底解決了,可是我卻有中文搜尋失敗的問題。

我是去 phpBB 官方網站下載 2.0.10 與他的 language & template,是我下載的地方不對嗎?

發表於 : 2004-10-08 08:32
DearHoney
自問自答.....

我去追蹤 search.php 中的執行程序,發現他會比對目前的網頁是否為 multi-byte 的語系,如果是這種語系的網頁他會用不同的 SQL 語法去搜尋文字,他內建了幾個 multi-byte 語系的編碼,是這麼寫的:

utf-8, big5,.....

但是,我在 lang_main.php 中,改成了這樣:

$lang['ENCODING'] = "UTF-8";

他利用 strstr 這個會區分大小寫的指令去比對,結果因為他內建的是小寫的 utf-8,但是我改的是大寫的 UTF-8,所以雖然一般網頁都能正常顯示,但是他在搜尋時,由於不認為現在是 multi-byte 的網頁語系,所以用英文語系的方式去搜尋,就搞砸了。

解決方法就是:

$lang['ENCODING']="utf-8";

寫成小寫的 utf-8 就好。

爬文裡面大家似乎都沒有強調過這件事情喔!給大家做參考。

發表於 : 2004-10-08 08:39
DearHoney
ayaya 寫:2.你寄出去的EMAIL,標題和內容會變亂碼嗎?
嗯!改完 UTF-8 後,我測試了這個部分,一如大家所說,這個地方會亂碼,我自己的解決法是這樣的,首先是 email 目錄下的 template(*.tpl) 不要去轉語系,維持原本 big-5 或其他 multi-byte 的內容不變,然後去修改語系檔中的 lang_main.php,找這一行:

$lang['Welcome_subject'] = 'Welcome to %s'; // Welcome to my.com forums

這一行不要用任何 multi-byte 的內容,例如我上面這樣,那麼當 user 註冊時所發出的通知信,其信件的標題,以及信件內的第一行,就是純英文,就避開這個問題了。

我因為只有測試到註冊信這個部分,所以只有改這樣,相信其他通知 user 有 PM、訂閱的主題有人回覆等,都可以在 lang_main.php 裡面,找到對應的標題,改為純英文即可讓信件看起來不會有亂碼了。

發表於 : 2004-10-08 08:41
DearHoney
不過想了一下,像我這種從骨子裡就使用 UTF-8 的情況,那種通知訂閱主題有人回覆的通知信件,應該會在信件內容提到主題的部分出現亂碼才是.....

發表於 : 2004-10-08 16:10
ayaya
感謝提醒 :-P

另外關於信件的問題

有人說「將信件傳送成html格式」的方法你試過了嗎?

發表於 : 2004-10-10 11:31
DearHoney
沒有,我並沒有將信件轉換成 HTML,還沒去研究這個部分該怎麼做。

發表於 : 2004-10-10 21:40
ayaya
DearHoney 寫:沒有,我並沒有將信件轉換成 HTML,還沒去研究這個部分該怎麼做。
http://phpbb-tw.net/phpbb/viewtopic.php?p=136417#136417

發表於 : 2004-10-10 22:29
ayaya
我終於發現解決email亂碼的終極無敵霹靂大絕紹(一次解決標題和信件內容亂碼)

就是把「輸入的內容」先轉成「Dec格式」再貼上即可 :-P

不過還有{變數}會變成亂碼…\r

但也是用同樣的解決方法!!

信件內容變數的值多是取自後臺基本組態欄位的值\r

只要這些欄位也改用「Dec格式」輸入即可 :-P

(以上如果是中文字才要轉,英文和數字可免)

發表於 : 2004-10-10 22:49
hpo14
何謂 dec 格式? 小弟不知道這是什麼~~

發表於 : 2004-10-10 23:32
ayaya
hpo14 寫:何謂 dec 格式? 小弟不知道這是什麼~~
你用ConvertZ轉碼時,輸出格式選「Dec」

轉出來的是字的原始碼,例如「竹貓星球」轉完如下:

竹貓星球


這讓我想到有些機密的交談曾用密碼寫,例如「竹貓星球」用\r

ZI EQRQ DSE KNA

發表於 : 2004-10-11 23:31
hpo14
~~~

小弟了解~~