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');
以上で見事、注文受付メールなどの自動応答メールの件名や本文にて、
正しく「髙橋」や「山﨑」が表示されます。
文責:牧秀樹
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.