OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

mail()の文字化けについて

  • 困ってます
  • 質問No.168050
  • 閲覧数48
  • ありがとう数10
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 62% (27/43)

HPでPHP3のmail()を使って利用者にmailを出しているのですが、
かなりの頻度で文字化けしてしまっています。
コンピュータ同士の相性の問題なのでしょうか?
それともプログラムに不備(あるいはこうすれば解消する)
があるのでしょうか。
是非是非とも御教授のほどお願いいたします。
OSはUNIX(Irixv6.5.1)でwebサーバはAppach、phpは4でなく3(そのためnkfでエンコードしてます)、文字コードはEUCでUPしています。

$to="(formで入力された利用者のアドレス)";
$subject="(固定)";
$body="(formで利用者が入力されたものあり)";
$header="Content-Type: Text/Plain;charset=iso-2022-jp\nFrom: office@○○○×××.com\n";
$pp=popen("echo '$subject' | /usr/local/bin/nkf -j","r");
while(!feof($pp)){
$jis_sub=$jis_sub.fgets($pp,1024);
}
$base64_sub=base64_encode($jis_sub);
$mime_sub="=?ISO-2022-JP?B?".$base64_sub."=?=";

$pp=popen("echo '$body' | /usr/local/bin/nkf -j","r");
while(!feof($pp)){
$jis_body=$jis_body.fgets($pp,1024);
}
mail($to,$mime_sub,$jis_body,$header);
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル12

ベストアンサー率 41% (324/772)

> 半角カナや機種依存文字でなくても化けて
だとすると、これはnkfが入力文字列の漢字コード判定を失敗している可能性はありませんか?
nkfの入力文字をEUCに決め打ち(-Eオプション)にするとどうでしょうか?

送信元<form>ファイルに
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
が書かれていれば、ほとんどの場合EUCでpostされるはずです。(たまに例外もあるようです)

レンタル屋さんに「php4.0.6以降にしてくれ」とは言えないんでしょうね、、、
お礼コメント
rodem01

お礼率 62% (27/43)

いろいろ有難うございます。
(-Eオプション)で上手く行くような気がします。多分。きっと。
*ちなみに
 $pp=popen("echo '$subject' | /usr/local/bin/nkf -j -E","r");
 でいいんですよね?
 色々Webで調べたのですがよくわからず多分こうだろうと…

とりあえず設置してみて様子をみます!
ホントに有難うございました!
投稿日時 - 2001-11-15 18:06:53
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル13

ベストアンサー率 25% (453/1783)

メールの基本はJISではないですか? EUCでも良いのでしょうか? ...続きを読む
メールの基本はJISではないですか?
EUCでも良いのでしょうか?
お礼コメント
rodem01

お礼率 62% (27/43)

EUCをメール用にJISに変換してます。
その過程で上手くいってないことは確かなのですが…
しかし、日本語の文字コードは誰か何とかして欲しいですよね。
投稿日時 - 2001-11-13 20:09:17
  • 回答No.2
レベル12

ベストアンサー率 41% (324/772)

本文内の半角カナや機種依存文字の処理は大丈夫ですか? 何かしらの制約でphp-i18n版を使えないのでしょうか? もし、可能であれば「php-3.0.18-i18n-jp2」を使えば、文字コード関連処理の手間がずいぶんと省けますよ。 またはphp4.0.6以降では、i18n系が統合されていますので、php3-i18n版とほぼ同等のi18n関連処理が可能です。 ...続きを読む
本文内の半角カナや機種依存文字の処理は大丈夫ですか?

何かしらの制約でphp-i18n版を使えないのでしょうか?

もし、可能であれば「php-3.0.18-i18n-jp2」を使えば、文字コード関連処理の手間がずいぶんと省けますよ。
またはphp4.0.6以降では、i18n系が統合されていますので、php3-i18n版とほぼ同等のi18n関連処理が可能です。
お礼コメント
rodem01

お礼率 62% (27/43)

回答有難うございます。

半角カナや機種依存文字でなくても化けてしまうのです。トホホ
(全てDBにインプットしてるのでその文字はわかってます。)
ちなみに何がしか半角カナや機種依存文字をはじく方法というのはあるのでしょうか?
もしありましたら是非お教えください。

HPはレンタルで借りていて、そこにインストールされているものを使うしかなく、
自分でどうにもできません。いわゆる国際化対応バージョンでないので、こうした処理をしています。そのレンタル屋さんに何とか国際化して欲しいのですが…
投稿日時 - 2001-11-13 20:18:29
  • 回答No.4
レベル7

ベストアンサー率 68% (13/19)

> $body="(formで利用者が入力されたものあり)"; とありますので、form からの入力とハードコーディングされた文字列と混在しているのでしょうか? であれば、複数の文字コードで構成された文字列ということになるでしょうから、nkf では化けると思います。 また、国際化されていない php であれば、下記 URL の jcode.phps がかなり有効で ...続きを読む
> $body="(formで利用者が入力されたものあり)";
とありますので、form からの入力とハードコーディングされた文字列と混在しているのでしょうか?

であれば、複数の文字コードで構成された文字列ということになるでしょうから、nkf では化けると思います。

また、国際化されていない php であれば、下記 URL の jcode.phps がかなり有効ではないでしょうか。
php 4 以上であれば、納得のいく速度だと思います。

ここからはほとんどチャチャですが。。。
あと、selenity さんがおっしゃっていますが、送信される form の内容は form の文字コードで送信される「わけでは」ありません。
ただ、歴史的な経緯でそうなっているだけのようです。
最近では、送信される文字コードは全て UTF-8 にしようという動きもあるそうですので。。。
ただし、現時点ではかなりの確率で form の文字コードで送信されます。

また、php を使用されているのであれば、header 関数を用いて、
header("Content-type: text/html; charset=EUC-JP");
としたほうが、META より効くはずです。

すいません。チャチャでしたね。。。
お礼コメント
rodem01

お礼率 62% (27/43)

ご返事遅れてすみません。
いろいろお教えいただいて有難うゴザイマス。
とりあえずselenity さんに教えていただいた-Eオプションで
様子を見てみます。
header("Content-type: text/html; charset=EUC-JP");
の件やformの文字の送られるコードなど、全然知りませんでした。
めっちゃくちゃ為になりました。有難うゴザイマス!
投稿日時 - 2001-11-15 18:10:26
  • 回答No.5
レベル6

ベストアンサー率 25% (2/8)

すでに解決されているかもしれませんが・・・。 初めの方がおっしゃっているように、$body 変数の文字コードが統一されていない可能性があります。 $body の文字列を form 入力値から生成する際に、form 入力値などを適切に EUC に変換する必要があるのではないでしょうか? ...続きを読む
すでに解決されているかもしれませんが・・・。

初めの方がおっしゃっているように、$body 変数の文字コードが統一されていない可能性があります。
$body の文字列を form 入力値から生成する際に、form 入力値などを適切に EUC に変換する必要があるのではないでしょうか?
お礼コメント
rodem01

お礼率 62% (27/43)

アドバイス有難うゴザイマス。
何分どしろうとなもので、文字コードが不統一だとか、nkfは自動識別だとか(よく考えれば何も入力に指定しないので当たり前なのですが)、formの文字コードは単純に<META>指定とは限らないだとか、全部意識せず突っ走ってきました、ここでいろいろ初めて知り、勉強になりました。
ホント有難うゴザイマス!
投稿日時 - 2001-11-15 18:14:04
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ