EC-CUBEではWEB画面上では正しく表示するが、メール文面では文字化けしてしまう文字※が存在します。
※髙﨑黑神福①②㈱㌍ⅠⅡ伹侚 など
例えば、「髙橋様」からの受注データを受注管理画面でみた場合、このまま表示されるが、
注文受付メールでは、「 橋様」や「・橋様」のように表示されてしまいます。
原因と対策について、以下に記します。
▼原因
一般的に、データベース内やプログラムファイル内のデータは、UTF-8で保持されおります。
EC-CUBEのメール送信プログラムは、JISを指定してあり、メール作成時に文字コードの変換処理を行っております。
掲題の文字列は、UTF-8からJISに変換できず、文字化けを起こしております。
▼対策
変換する文字コードに「ISO-2022-JP-MS」を指定することで、文字化けが解消いたします。
具体的には、次の2ファイルを修正します。
(1). /data/class/SC_SendMail.php
・修正前
$this->subject = mb_encode_mimeheader($subject, 'JIS', 'B', "\n");
$this->body = mb_convert_encoding($body, 'JIS', CHAR_CODE);
$_name = mb_encode_mimeheader($_name, 'JIS', 'B', "\n");
・修正後
$this->subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\n");
$this->body = mb_convert_encoding($body, 'ISO-2022-JP-MS', CHAR_CODE);
$_name = mb_encode_mimeheader($_name, 'ISO-2022-JP-MS', 'B', "\n");
(2). /data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php
・修正前
$this->tpl_body = mb_convert_encoding($objSendMail->body, CHAR_CODE, 'auto');
・修正後
$this->tpl_body = mb_convert_encoding($objSendMail->body, CHAR_CODE, 'ISO-2022-JP-MS');
▼JIS→JIS拡張文字
高→髙
崎→﨑
神→神
福→福
羽→羽
黒→黑
塚→塚
増→增
横→橫
青→靑
清→淸
館→館
飯→飯
郷→鄕
濱→濵
都→都
瀬→瀨
郎→郞
朗→朗
逸→逸
寛→寬
徳→德
悦→悅
晴→晴
靖→靖
匡→匤
羨→羡
教→敎
妹→妺