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

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

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
DearHoney
星球普通子民
星球普通子民
文章: 21
註冊時間: 2002-06-10 01:44

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

文章 DearHoney »

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

首先是討論區本身 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 »

補充說明。

因為我都是把 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 下搜尋中文的問題就解決了。
頭像
brentsu
星球公民
星球公民
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網
聯繫:

文章 brentsu »

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

請問...那如果是寄到 @yahoo.com.tw 的信件呢???
※架設伺服器主機:Mac mini 1.5GHz, 1GB RAM x 三部
※架設主機作業系統:Mac OS X Server 10.6.6 Snow Leopard
※我的上網方式:固定制 ADSL 16M/8M、6 IP
※安裝的伺服器:Apache + php 5 + MySQL 5
※我的 phpBB2 版本:phpBB 3.0.x UTF-8 版
※BNW會議室網址: http://www.bnw.com.tw/conference/
oliver0121
星球普通子民
星球普通子民
文章: 11
註冊時間: 2004-01-24 14:14

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

文章 oliver0121 »

修改過後
仍有截字現象
zxc2001s
星球普通子民
星球普通子民
文章: 1
註冊時間: 2006-02-16 18:52

文章 zxc2001s »

不好意思我剛用你的方法後
yahoo的標題還亂碼內容正常
頭像
oscerropper
星球公民
星球公民
文章: 197
註冊時間: 2004-12-21 17:56
來自: 興趣的黑洞

文章 oscerropper »

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

我是直接採用2.0.19來安裝
●架設主機作業系統:Unix
●您的上網方式:虛擬主機。
●您安裝的程式:
Apache version 2.0.63
MySQL version 45.0.92-community
PHP version 5.2.14
Perl version 5.8.8
●您的 phpBB2 版本:phpBB 3.0.8。
主題已鎖定

回到「phpBB 2 安裝與使用」