[PHP-users 26029] Re: コマンドラインからメール送信すると文字が化ける

Taku Shiratori vez @ jcom.home.ne.jp
2005年 6月 30日 (木) 19:34:30 JST


白鳥です。
お返事ありがとうございます。

>ぢょ〜@よくきたな さん

>>webページからは問題なく送信できていることを考えると、
>>スクリプト自体は問題ないと思います。
>
> 基本的にウェブからの PHP の処理とコンソールからの PHP の処理は
> 一致しない場合が多いので基本的に上記は成り立ちません.

→ 知りませんでした。勉強になります。

>>Linux側で実行する際のユーザー環境が問題かと思い、
>>env で確認したところ LANG=en_US.UTF-8 となっていたので、
>>export LANG=ja_JP.SJIS として文字コードを変更しましたが、
>>文字化けは直りませんでした。UTF-8でも同様です。
>>(PC、i-modeともに文字化けが起こっています。)
>
> あまり関係ないところを編集しています.

→ そのようですね・・・

>>また、Linux の mail コマンドでの送信は出来ているようですが、
>>これも日本語の送信では文字化けが起きています。
>
> そもそも日本語メールの送信についての知識がやばそうなのですが(苦笑
> なんにしろ「問題がない」と思うスクリプトを可能な限り関連する処理だ
> けにシェイプアップして掲示したほうがいいと思います.

→ ソースですがこんな感じです。
<?
$mail_body = "
-------------------------------------------------
[postgreSQLから取り出した文字列]
ダミーテキストです。ダミーテキストです。ダミーテキストです。
-------------------------------------------------
";
$to = 'hoge @ hoge.com';
$subject = 'ダミーテキストです。';
$headers = 'FROM: info @ hoge.com';
mb_send_mail($to, $subject, $mail_body, $headers);
?>
ちなみに、
mb_language('Japanese');
mb_convert_encoding($mail_body, 'SJIS');
などを追加してみたのですが、文字化けの文字が変わっただけでした。



>榮水 さん

> 個人的には、「極める!PHP」に載っていたPEAR::Mail, PEAR::Mail_Mime
> を使って送信する方法がお勧めです。

→ PEARは使ったことがないので、このタイミングでは出来れば
  使わないで解決できたらと思っています。
  勉強が追いつかなくなってしまいそうなので・・・
  「極める!PHP」まだ持ってないので、読んでみます。
  情報ありがとうございます。



>Seto さん

> コマンドラインで
> php -i > info.html
> とでもして info.html をブラウザでチェック
> マルチバイト関連の設定を確認してみる

→ 実行してみました。
結果ですが、

Multibyte Support enabled
Japanese support enabled
Multibyte (japanese) regex support enabled
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.internal_encoding あたりを UTF-8 にすると直りそうです。
まずは試してみます。

白鳥



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