A1 多國語系顯示修正 2 (發文者:OOO)
A2 多國語言完全修正(phpBB 2.0.2) (發文者:Scorpion)
A3 phpBB 2.0.4 多國語言 & CODE 標籤亂碼修正 (發文者:Scorpion)
B1把資料庫及 language 目錄下的子目錄轉成 unicode(UFT-8 編碼) (發文者:NeoCosmo)
B2 把所有的語系檔(簡中、日文等)都轉成 Unicode HTML , encode 設為 big5 (發文者:Scorpion)
我的問題是:
1. 請問各位站友是以上用哪一種方法?
(如有未列出的其他方法歡迎提出或提供連結)
2. 請問竹貓是用哪一種方法?
(如是未列出的其他方法歡迎提供相關連結)
3. 如果是用B2,請問資料庫是不是也要改成 Unicode ?
4. 我的論壇還在測試階段,希望在論壇上能同時顯示繁體(正體)、簡體字及英文內容,而不會出現亂碼,以小弟的情況,大家建議用什麼方法?
我的環境:
●架設主機作業系統:Windows Xp Pro
●安裝的程式:Apache 1.3.27 + php 4.3.1 + MySql 4.0.13
(安裝在自己電腦上,和付費空間同樣版本)
●付費空間連結: iSMILE http://www.ismile.tv/
●付費空間主機作業系統:Linux
●我的網址:http://www.anyone.idv.tw/
(還在測試中,想先在電腦弄好後再上傳)
●上網方式: Hinet ADSL
●我的 phpBB2 版本:phpBB 2.0.5
已知的問題:
1. 在CODE中的少許文字(如「設」等)會出現亂碼\r
2. 切換成英語介面後,中文全部變成亂碼。
目前已安裝的 MOD: TOP5 及「快速回覆」上述已知問題應該與 MOD無關
以下節錄整理我所看到的重點,也算是確認一下自己的理解,可能有所誤解或疏漏,請指教:
=========================================
許多前輩提到各種做法,從搜尋所見的許多文章中,似乎最主要的有兩大類方法:
A:修改檔案內容的程式碼:
A1 多國語系顯示修正 2 (發文者:OOO)
http://phpbb-tw.net/phpbb/viewtopic.php?t=5244
重點:修改以下檔案:
includes/function_post.php
privmsg.php
posting.php
A2 多國語言完全修正(phpBB 2.0.2) (發文者:Scorpion)
http://phpbb-tw.net/phpbb/viewtopic.php?t=7987
A3 phpBB 2.0.4 多國語言 & CODE 標籤亂碼修正 (發文者:Scorpion)
http://netcity7.web.hinet.net/UserData/ ... ilang.html
重點:修改以下檔案:
posting.php
privmsg.php
includes\functions_post.php
includes\usercp_register.php
includes\bbcode.php
admin\admin_users.php
B:使用 unicode 編碼:
我來拯救各位啦!徹底『多國語言修正』!! (發文者:NeoCosmo)
http://phpbb-tw.net/phpbb/viewtopic.php?t=14579
特別是這頁:
http://phpbb-tw.net/phpbb/viewtopic.php ... 9&start=15
關於這個方法,以下節錄部分重點文字,細節詳見相關連結:
B1把資料庫及 language 目錄下的子目錄轉成 unicode(UFT-8 編碼) (發文者:NeoCosmo)
NeoCosmo 寫: 其實根本不必做什麼修正,不必!
所有的問題都是語言包的問題,因為語言包不是以 unicode 寫成的!
所以只要語言包是 unicode,所有問題都解決了。
而且還有一個絕好的好處是之前的修正方案比不上的:
就是各位還能加裝不同的語言包,真正實現多語論壇。
即美國來的朋友看英語介面,中國來的朋友看簡体介面,日本來的朋友看日語介面...等等。
有人會問本來就可以不是嗎?
不對,因為當你切換不同語言包時,論壇內有的留言會變亂碼。
例如你的論壇原本是繁體中文,內有日文留言,而當你切換成日文語言包時,你所有的繁體中文留言都會變亂碼!
總之,我說的方法就是論壇可以任意切換不同的語言介面,而且不論什麼語言的留言都可以正確顯示,你們就不會再看到像 &#xxxxx; 之類的未解譯 unicode 數字碼了。
B2 把所有的語系檔(簡中、日文等)都轉成 Unicode HTML , encode 設為 big5(回應者:Scorpion)Scorpion 寫:如果已經使用 Big5 編碼就繼續用,不要那麼麻煩轉成 Unicode,Unicode 的最大兩點好處:
1.不會有衝碼、亂碼問題
2.多國語文並存
缺點:
1.utf-8 是非固定長度的多位元編碼,編碼長度 1~4 bytes 與固定長度 2 bytes 的 Big5 或 gb2312 不同,中文大多落在 3 bytes 的編碼範圍,所以資料庫空間的使用量會多出 1/2 左右。
2.論壇寄發 Email 的標題及內容都會變成亂碼,我在 IPB 測試都是如此,不過 phpBB2 這方面很優異,郵件內容正常,只有 Email 標題是亂碼 (我用 Becky 收信),正在研究這方面的差異來解決我 IPB 的 UFT-8 編碼郵件亂碼問題。
(gilels 按:後文有談到可能是收信軟體對 unicode 支援的問題,詳見該頁連結)
但是 phpBB2 的中文相容性很好,多國語言也很好修正,實在沒必要多此一舉。
若是全新安裝的論壇來使用 Unicode 是較好的做法(個人意見)。
我提供一下從已經正在運作的 Big5 論壇轉為 Unicode 的步驟:
資料庫部份
1. 使用 phpmyadmin 匯出 *.sql 資料庫\r
2. 以轉碼軟體 (如 ConvertZ) 將 *.sql 轉成 utf-8
3. 再用 phpmyadmin 匯入轉換過的 *.sql
(MySQL 只是提供一個資料庫的儲存空間而已,存取資料是由 phpBB2 程式自由運用的,所以不須重裝,也不用作什麼設定。)
語言檔部份
1.以轉碼軟體 (如 ConvertZ) 轉成 utf-8
2.將各語言檔裡面的 big5 改成 utf-8
大致過程如此。(後略)
PS. 其實使用 Big5 編碼也可以做到多國語言界面瀏覽論壇而不會有語言界面與論壇文章編碼衝突所造成的亂碼。
Scorpion 寫: 在 Big5 編碼下,如何使用日文、簡體...等語言界面瀏覽論壇 Big5 文章,而不會有衝突?
很簡單,與解決 Big5 下多國語言並存的原理相同,將語系檔轉成 Unicode HTML 編碼,也就是 &#xxxxx; 這類的數字碼。
Scorpion 寫:沒錯,正是這樣!NeoCosmo 寫: 嗯...這個方法我有想過,可是後來仔細想想,好像有點不合用,所以沒有實驗看看...
您應該是指把所有的語系檔(簡中、日文等)都轉成 Unicode HTML ,並且 encode 也設為 big5 的意思吧?
當 encode 設為 Big5 的時候,中文仍然以 2bytes 的 Big5 編碼,只有非 Big5 的外國字碼如簡體字、日文,才會以 &#xxxxx; 編碼,這和語系檔轉為 Unicode HTML 字碼完全無關。
轉為 Unicode HTML 的字已經不受編碼限制,可在任何語系 HTML 頁面下顯示正常的字體。
只有 charset 指定 iso-8859-1 等西歐字元編碼時才會將所有非英數字的字碼轉為 &#xxxxx;,是故在以 Big5 中文編碼為主的論壇上,偶爾使用的簡體字、日文並不會造成資料庫的負擔。
Scorpion 寫:沒錯,我的意思正是如此,但是語系檔裡面關於 Email 內容的檔案不能轉,因信件程式會顯示原本的 TEXT 格式內容無法解讀 &#xxxxx;,除非 Email 是以 HTML 格式寄出,那就可以。NeoCosmo 寫: 嗯,前輩所述的我懂。
但要讓不同國家的人看不同的語言介面還是要從語系檔著手吧?
例如要顯示簡体中文介面還是要將簡体中文語言包內的字串都轉為 &#xxxxx;碼,然後編碼設為 big5 吧? 不知我的想法和前輩所述的是否一致?
owenlin 寫:Hello,
我寫了一支小程式來轉換其它語系到unicode,
目前,這個程式已經成功的轉換了,
正體中文,簡體中文,日文,以及法文的語系檔,
所有java有支援的語言,應該都可以正確的轉換。
(後略)
yuan 寫: 語系檔使用非utf-8的都要轉 並且在lang_main.php中要設定utf-8
不然一樣會乩碼, 另外次層目錄email下的所有tbl檔內的編碼也要先改為utf-8
然後再編碼,這樣寄出去的信才不會是乩碼(目前我的站採用utf-8,發信都正常)
另外有關html要設定的部份請往上詳閱,
搜尋試過,沒什麼問題,重要的問題是在資料庫轉碼,如果有機會要作轉碼你就會知道了,資料庫是重點~!!
另外,在\rTanisELF 寫:嗯,只需轉換語系檔案即可,記得每個語系檔案內的這一行要指定為UTF-8:mch 寫: 或只是轉換 語系檔(language) ?這樣瀏覽phpbb2時的網頁編碼就會自動使用UTF-8,但注意這只適用於新安裝的phpbb2;如果有舊big5格式的資料庫內容的話,那麼也必須先把資料庫內容轉換成utf-8才行(相關資料在本篇討論前面)。代碼: 選擇全部
$lang['ENCODING'] = 'UTF-8';
http://phpbb-tw.net/phpbb/viewtopic.php?t=16029
Scorpion 寫:1.把 big5 全改為 utf-8
2.使用轉碼器將語系檔全部轉為 utf-8 編碼
這樣就可以了。
另外一提,使用 UTF-8 就不需進行多國語言修正!
最後,再重述小弟的問題:
1. 請問各位站友是以上用哪一種方法?
(如有未列出的其他方法歡迎提出或提供連結)
2. 請問竹貓是用哪一種方法?
(如是未列出的其他方法歡迎提供相關連結)
3. 如果是用B2,請問資料庫是不是也要改成 Unicode ?
4. 我的論壇還在測試階段,希望在論壇上能同時顯示繁體(正體)、簡體字及英文內容,而不會出現亂碼,以小弟的情況,大家建議用什麼方法?
感謝您,看完這篇這麼長的問題!