SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

メールに半角カナが入れられないのはなぜ

問題

メールには半角カナが使えないのですか。

答え

インターネットでメールを送受信するためのメッセージ形式の仕様では、7bit ASCII文字のテキストしか許されていませんでした(ASCIIコード0~127のみ。8bit目は常に0。)。

そのため、日本語で書いたメールは、日本語の文字を 7bit で表現できる JIS で必ず送受信を行うように決められました。

JISは半角カナを含まないです。

それで、お行儀よくJISでメールを送るときに、お行儀悪く半角カナを送ろうとすると文字化けします。

JISのメールを送信するメールソフトは、半角カナを含めると、だいたい勝手に全角にして送信します。

phpのmb_send_mailはそこまで頑張らないので、そのまま化けた文字を送ります。

JISのメールを送るなら、以下のように。

mb_language('ja'); //日本語だよ
mb_internal_encoding('EUC-JP');
mb_send_mail('test@softel.jp', 'test', 'EUC-JPの文字列');

UTF-8の文字(半角カナ、ハングル、ロシア語…混在)を送りたいときは、以下のように。

mb_language('uni');
mb_internal_encoding('UTF-8');
mb_send_mail('test@softel.jp', 'test', 'UTF-8の文字列');

後者は8bitのデータをそのまま送るのではなくて、通常は7bitに収まるようにエンコードされて送られる。

届いたメールのヘッダを見ると、ちょっと違う。中身も様子がちょっと違う。

以前はUTF-8のメールは文字化けする環境が多くあったが、最近はだいぶ減ったと思う。

関連するメモ

コメント