多言語対応のPHPフォームを作成する機会があったのですが(中国語と韓国語)、送信内容がどうしても文字化けしてしまう。
それで、ちょっとmb_language() について調べてみたのでその時のメモです。
国内のサーバーはおおよそデフォルトでmb_language(Japanese)になっている事がほとんどだと思うのですが、この場合「ISO-2022-JP/Base64」が用いられます。
韓国語などで送信したい場合はmb_language(uni)にする必要があるのですが、この場合だと「UTF-8/Base64」となり、文字化けをおこさずに送信できます。
ただし、メールソフトがunicode対応ではない場合は、mb_language(uni)にしても文字化けは解消されません。
(といってもいまどきunicode対応ではないメールソフトは限られているのですが、筆者はたまたまEdmaxのunicode非対応のメールソフトを使っていたのでひっかかってしまいました。)
特に携帯電話などは対応していないものもまだ多くありますので、日本語を扱いたい場合はmb_language(Japanese)が確実です。
- mb_language(Japanese) ・・・ ISO-2022-JP/Base64
- mb_language(uni) ・・・ UTF-8/Base64
- mb_language(English) ・・・ ISO-8859-1/quoted printable
【参考URL】
PHPによるUTF-8メール(多言語混在メール)の送信方法
メール送信 mb_send_mail
PHPによるWebアプリケーションスーパーサンプル 第2版
posted with amazlet at 10.05.24
西沢 直木
ソフトバンククリエイティブ
売り上げランキング: 7349
ソフトバンククリエイティブ
売り上げランキング: 7349
初めてのPHP & MySQL 第2版
posted with amazlet at 10.05.24
Michele E. Davis Jon A. Phillips
オライリージャパン
売り上げランキング: 135621
オライリージャパン
売り上げランキング: 135621
PHPによるWebアプリケーションスーパーサンプル ~リッチクライアント編~
posted with amazlet at 10.05.24
鶴長 鎮一 繁田 卓二 竹下 肯己
ソフトバンククリエイティブ
売り上げランキング: 24904
ソフトバンククリエイティブ
売り上げランキング: 24904
PHP×WebサービスAPIコネクションズ
posted with amazlet at 10.05.24
秋元 裕樹
ソフトバンククリエイティブ
売り上げランキング: 224375
ソフトバンククリエイティブ
売り上げランキング: 224375