1 頁 (共 1 頁)

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

發表於 : 2005-09-30 14:16
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,操作語系包含簡繁體中文、英文、日文、韓文,不論是畫面還是信件,均正常,由員工自行決定要看什麼語系的介面。

發表於 : 2005-09-30 14:25
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 下搜尋中文的問題就解決了。

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

請問...那如果是寄到 @yahoo.com.tw 的信件呢???

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

發表於 : 2005-11-03 17:54
oliver0121
修改過後
仍有截字現象

發表於 : 2006-02-21 01:19
zxc2001s
不好意思我剛用你的方法後
yahoo的標題還亂碼內容正常

發表於 : 2006-02-21 12:33
oscerropper
請問不知道各位是否知道郵件相關問題:
http://phpbb-tw.net/phpbb/viewtopic.php?t=42423 :-(

我是直接採用2.0.19來安裝