メールに半角カナが入れられないのはなぜ
問題
メールには半角カナが使えないのですか。
答え
インターネットでメールを送受信するためのメッセージ形式の仕様では、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のメールは文字化けする環境が多くあったが、最近はだいぶ減ったと思う。
コメント