とある技術者の備忘録的情報

EC-CUBE 機種/環境依存文字による自動返信メールでの文字化け対策(髙橋・山﨑など)

EC-CUBEで「髙橋様」や「山﨑様」といった環境依存文字・機種依存文字が使われた際、
注文受付メールなどで「山様」や「山・様」と「﨑」が正しく表示されない問題にあたった。

これを解決した方法を記録に残しておく。

【理由】

データベース上ではUTF-8で保存しているが、
EC-CUBEはデフォルトではメール作成時に
文字コードを「JIS」に変換していた。

そのため、「髙」や「﨑」などの特殊文字を
UTF-8からJISに正しく変換できない現象が
起こっていたのが原因であった。

【解決策】

変換する文字コードを「ISO-2022-JP-MS」に変更する。

■変更するファイル(2つ)
/data/class/SC_SendMail.php
/data/class/pages/admin/order/LC_Page_Admin_Order_Mail.php

(a) /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");

(b)/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');

以上で見事、注文受付メールなどの自動応答メールの件名や本文にて、
正しく「髙橋」や「山﨑」が表示されます。

文責:牧秀樹

関連記事

コメント

  1. May I just say what a comfort to discover somebody that genuinely knows what they’re
    talking about on the internet. You actually realize how to bring an issue to light and make it
    important. A lot more people need to read this and understand this side of your story.
    I was surprised you’re not more popular given that you certainly possess the gift.

  1. この記事へのトラックバックはありません。

スポンサードリンク