[教學] 分享 UTF-8 化的經驗(含 web 畫面與信件)

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)

[教學] 分享 UTF-8 化的經驗(含 web 畫面與信件)

文章DearHoney » 2005-09-30 14:16

如果這邊有人已經提出了以下的解決法,那就是我爬文沒有爬到了,很抱歉佔用大家的時間來閱讀了。

首先是討論區本身 UTF-8 的作法,這邊已經有很多前輩分享了作法,我也是採用一樣的方法,也就是討論區程式不做任何更動,而是去更動 language 目錄下面的 *.php 檔案,利用 ConvertZ 或 EmEditor,轉換為 UTF-8 格式,並且注意不要有 BOM 特徵。

再把 lang_main.php 中,一開頭改成 $lang['ENCODING'] = 'UTF-8'; 如此一來整個討論區就已經 UTF-8 化,存在資料庫中的也都是 UTF-8 格式的文字。

但對於信件亂碼的問題,我的解決方法則在這邊沒找到,如果已經有人提過就當我多嘴囉!分享如下:

1. 將 language/XXX/email/ 下的 *.tpl 檔,全部轉換成 UTF-8,並且,每一個檔案都要打開來編輯,把頭一行或頭二行寫著 Charset 的地方均改成 Charset: UTF-8。

2. 我以 2.0.17 版為準,修改程式 includes/emailer.php,找 190 行附近,寫著:
代碼: 選擇全部
$this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to
" : '') . (($this->from != '') ? "From: $this->from
" : "From: " . $board_config['board_email'] . "
") . "Return-Path: " . $board_config['board_email'] . "
Message-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">
MIME-Version: 1.0
Content-type: text/plain; charset=" . $this->encoding . "
Content-transfer-encoding: 8bit
Date: " . date('r', time()) . "
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: PHP
X-MimeOLE: Produced By phpBB2
" . $this->extra_headers . (($cc != '') ? "Cc: $cc
" : '')  . (($bcc != '') ? "Bcc: $bcc
" : '');

換成這樣:
代碼: 選擇全部
$this->extra_headers=(($this->reply_to != '') ? "Reply-to: $this->reply_to
" : '') . (($this->from != '') ? "From: $this->from
" : "From: " . $board_config['board_email'] . "
") . "Return-Path: " . $board_config['board_email'] . "
Message-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">
MIME-Version: 1.0
Content-type: text/plain; charset=" . $this->encoding . "
Date: " . date('r', time()) . "
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: PHP
X-MimeOLE: Produced By phpBB2
" . $this->extra_headers . (($cc != '') ? "Cc: $cc
" : '')  . (($bcc != '') ? "Bcc: $bcc
" : '');


上述的修改是刪除其中 Content-transfer-encoding: 8bit 的部分,此部分會導致信件本文無法正常以 UTF-8 儲存。

3. 修改完成,這樣一來寄出來的信件不論是標題還是內文,均是 UTF-8 格式。我收信軟體是 Outlook 2003,可以正確顯示沒有問題。

我自己在公司中架設的討論區就是 UTF-8,操作語系包含簡繁體中文、英文、日文、韓文,不論是畫面還是信件,均正常,由員工自行決定要看什麼語系的介面。
DearHoney
星球普通子民
星球普通子民
 
文章: 21
註冊時間: 2002-06-10 01:44

文章DearHoney » 2005-09-30 14:25

補充說明。

因為我都是把 big5 gb2312 這樣的字給改成 UTF-8,會造成 search.php 中定義:
代碼: 選擇全部
$multibyte_charset = 'utf-8, big5, shift_jis, euc-kr, gb2312';

比對差異,使得中文搜尋無效,所以要不就是在改每個語系檔案時,注意一下不要像我一樣改成大寫的 UTF-8,應該寫小寫的 utf-8,否則就是回頭再來改 search.php 中此處,把原本小寫的 utf-8 改成大寫的 UTF-8,這樣 UTF-8 下搜尋中文的問題就解決了。
DearHoney
星球普通子民
星球普通子民
 
文章: 21
註冊時間: 2002-06-10 01:44

文章brentsu » 2005-09-30 18:54

請問【刪除其中 Content-transfer-encoding: 8bit 的部分】就能解決亂碼??我用 Outlook Express 沒試出有啥問題.....

請問...那如果是寄到 @yahoo.com.tw 的信件呢???
※架設伺服器主機:Mac mini 1.5GHz, 1GB RAM x 三部
※架設主機作業系統:Mac OS X Server 10.4.2 Tiger
※我的上網方式:固定制 ADSL 4M/1M、3 IP
※安裝的伺服器:Apache 1.3.33 + php 4.3.11 + MySQL 5.0.19-max
※我的 phpBB2 版本:phpBB 2.0.21 UTF-8 版
※我的會議室網址: http://bbs.bnw.com.tw/conference/
頭像
brentsu
星球公民
星球公民
 
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網

Re: [教學] 分享 UTF-8 化的經驗(含 web 畫面與信件)

文章oliver0121 » 2005-11-03 17:54

修改過後
仍有截字現象
oliver0121
星球普通子民
星球普通子民
 
文章: 11
註冊時間: 2004-01-24 14:14

文章zxc2001s » 2006-02-21 01:19

不好意思我剛用你的方法後
yahoo的標題還亂碼內容正常
zxc2001s
星球普通子民
星球普通子民
 
文章: 1
註冊時間: 2006-02-16 18:52

文章oscerropper » 2006-02-21 12:33

請問不知道各位是否知道郵件相關問題:
http://phpbb-tw.net/phpbb/viewtopic.php?t=42423 :-(

我是直接採用2.0.19來安裝
●架設主機作業系統:Unix
●您的上網方式:虛擬主機。
●您安裝的程式:
Apache version 1.3.41 (Unix)
MySQL version 4.1.22-standard-log
PHP version 4.4.9
Perl version 5.8.8
Kernel version 2.6.24.2-g-r3
●您的 phpBB2 版本:phpBB 3.0.4。
頭像
oscerropper
星球公民
星球公民
 
文章: 189
註冊時間: 2004-12-21 17:56
來自: 興趣的黑洞


回到 phpBB 2 安裝與使用

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客

Partnership: phpBBHacks.com