[PHP-users 14994]メール件名の文字化けについて

kohara skohara @ fb3.so-net.ne.jp
2003年 5月 2日 (金) 15:15:26 JST


小原と申します。度々の投稿で恐縮しております。

RedHatLinux7.2J、Apache1.3.27、PHP4.3.1(CGI版)の環境にて動作テストの
ため、メールフォームを作成してみました。

だいだい正常に動作しているのですが、件名に少々長い文字列を入れると
受信メールにて件名が文字化けしてしまいます。過去ログを見て似たような
現象があったので対応してみましたがやはりだめでした。

例えば)
件名に「てすと」だと文字化けなし
件名に「てすとてすとてすとてすと」だと文字化け発生
⇒てすとてすとてすと$F$9$H
*********************************************************************
必ず10文字目から文字化けしてしまいます。半角英数字だと文字化けしませ
んので、バイト数は関係ないと思います。
*********************************************************************

phpinfoでの情報は以下のとおり
----------------------------------------------------------------------
'./configure' '--enable-mbstring' '--enable-mbregex' 
'--enable-zend-multibyte' '--without-mysql' 

mbstring.detect_order auto
mbstring.encoding_translation Off
mbstring.func_overload 0
mbstring.http_input auto
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
mbstring.language Japanese
mbstring.script_encoding no value
mbstring.substitute_character no value
----------------------------------------------------------------------

ちなみにスクリプトでのメール送信処理にはmb_send_mail()ラッパーを
使用して以下のように記述しています。
**********************************************************************
mb_language("Japanese");
mb_internal_encoding('EUC-JP');

$subject = mb_convert_encoding($subject,"JIS","auto");
$msg = mb_convert_encoding($msg,"JIS","auto");

mb_send_mail($To, $subject, $msg, "From:$From");
**********************************************************************

参考)
php.iniでも指定していますが、一応mb_language("Japanese");
mb_internal_encoding('EUC-JP');で再設定しています。

mb_send_mailの利用の場合、文字コード変換は自動との説明がありまし
たが、上記のようにmb_convert_encoding()を利用しないと文字化けしてし
まいましたので明示的にJISエンコードしています。

どなたかお分かりになるかたがいらっしゃいましたら宜しくお願い致します。




PHP-users メーリングリストの案内