EC-CUBE

【EC-CUBE】機種依存文字/環境依存文字によるメール文字化け(髙、﨑など)

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’);

プライバシーマーク
Return Top