絵文字活用術 その4(メールに絵文字を使うには)
メール配信などで、絵文字入りメールを送りたい場合があると思います。
ですが、ここでもひと手間が必要になります。
■docomoの場合
文字コード:Shift-JIS
絵文字コードをそのままmail関数などで送信すると〓(ゲタ)になります。
絵文字を文字化けさせないようにするには、base64_encode()とmb_convert_encoding()を使用します。
base64_encode()とは、送信時に一定のルールに従ってデータを文字列に置換し、受信した後に元に戻る手法を
行うための関数です。これは、メール自体が、文字(テキストデータ)しか送信できないからです。
そこであえて、絵文字であるにもかかわらず、絵文字つきメールのサブジェクトや本文をbase64_encode()させることにより、
別の文字列に変換させ、一般的なメールで用いられるISO-2022-JPに置換させてから送信することで、
文字化けを防ぐことができます。
$subject = "(太陽の絵文字)件名テスト(太陽の絵文字); $subject = base64_encode($subject); //base64エンコード化 $subject = mb_convert_encoding($subject,"ISO-2022-JP","Shift_JIS");//ISO-2022-JP化 $subject = "=?ISO-2022-JP?B?" . $subject . "=?="; $body = "(笑顔の絵文字)本文テスト"; $body = chunk_split(base64_encode($body));
■auの場合
docomoの時と同様の手順でメール送信を行うと、正常に受信者に絵文字が表示されます。
■SoftBankの場合
文字コード:UTF-8
絵文字コードをそのまま記載しても以下の条件で文字化けしてしまいます。
1.2G携帯の場合
2.長いメールの場合でてくる「続きを読む」でDLする場合
この場合、絵文字が「$Pe」という文字で出力されるので見栄えが悪くなります。
解決方法として、UTF-8で絵文字をバイナリデータとしてメールを送ると正常に表示されます。