No.5ベストアンサー
- 回答日時:
質問者はPHPファイルだけに注目しているように見えます(誤解だったらごめんなさい)。
WebサイトというのはPHPファイルやHTMLファイルが混在しているのではないでしょうか。
私だったらあるWebサイトをUTF-8に変更するなら、すべてをUTF-8にしちゃいます。
【PHPファイル】
旧PHPファイルの文字コードをUTF-8に変換し、
htmlコードを吐く部分でシフトJISなどの文字列を見つけたらUTF-8に置換し、
念のためhtmlコードの1文字目を吐くより前に header("Content-type: text/html; charset=utf-8");を発行し、
ファイル保存時もUTF-8を確認して上書き保存します。
【HTMLファイル】
旧HTMLファイルの文字コードをUTF-8に変換し、
ファイル内でシフトJISなどの文字列を見つけたらUTF-8に置換し、
もしないなら<HEAD></HEAD>タブ内に
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
を書き、
ファイル保存時もUTF-8を確認して上書き保存します。
他にもデータベースの文字コードも神経使う部分ですし、
メールを送信するなら回答番号:No.2の通りISO-2022-JPも使用しなければなりませんが、
本件の場合まず上記のステップをテストしてみてはどうでしょうか。
それで良くならなければphp.iniの設定の確認と変更ですね。
筋から行けばまずphp.iniを調整すべきですが、php.iniの調整は精神的に疲れるので
私はあとまわしにしてどうしても必要なときだけ調整するようにしています。
話が前後しますが何よりもまず、Webブラウザで文字化け発生時、ブラウザの[表示]-[エンコード]で各種文字コードを試してみてどの文字コードでまともに読めるか確認、
ブラウザの[表示]-[ソース]でHTMLを生で表示してみて文字コード指定がどうなっているかを確認すれば、解決の糸口になるでしょう。
やってみたことと確認したことの情報を出せる範囲でもう少し詳しく出していただければ、レスポンスがつけやすくなります。
この回答への補足
おかげさまで、先日より確認のために、成功した3サイトとの違いを見つけ再試行してみましたら、文字化けなく、送受信も成功いたしました。
原因は、文字コード設定をきちんとできていない事でした。
HTMLのMetaの中だけ変更しただけで、「ファイル」から「文字/改行コード指定保存」をプルダウンメニュのUTF-8を選択して設定してありませんでした。
わかってみるとなんてないことでした。お騒がせしました。
いろいろとありがとうございました。
丁寧なお返事をありがとうございます。
そもそも、問題の4つめのサイトは昔作成したしたものに最近になって後からお問い合わせフォームを加えました。そのサイト作成時には初期のホームページビルダーを使用しました。
それに同じ仕様のままフォームのページだけタグうちで追加作成しました。
このサイトに関しましては、文字コードももちろんですが、最初からもう一度HTMLをきちんとしたものにコーディングしなおしたほうがいいようです。
少し時間がかかるかもしれませんが、再度トライしてみます。
No.4
- 回答日時:
私は初心者なのですが、何度も文字化けには苦労させられました。
私も同様な経験があります。メールの本文だけが文字化けしたりとか、yahooのWEBメールでは文字化けしていないのにgooのWEBメールでは文字化けしていたりとか・・・。文字化けの原因のほとんどが異なる文字コードで記載されたものが混在していることでした。
みなさまの回答を拝見してこの質問内容に関しての情報提供が不足していたことから、回答者のみなさまが適切な判断に至らなかったと反省しています。
私自身が全くPHPを理解していません本当の初心者で、お問い合わせフォームに挑戦しています。
4つのサイトにフォームを設置してそのうち3つはちゃんと動いています。PHPの部分だけをコピペーして4つめのサイトへフォームを設置したところこのようになりました。
なので、問題はPHPではなく、文字コードが原因だとは推測できるのですが、送られてきた文字化けした本文は確かにISO-2022-JPとなっていました。
既存のHTMLのページにPHP部分をコピペーして文字コードをShift_JJISからUTF-8へ変更しただけですので、そこに原因があるのだと思います。
なにはともあれ、この質問することに対しても勉強不足だということを再認識いたしました。
みなさまに一括してのお礼となり申し訳ありませんが、回答してくださいましたみなさまありがとうございました。
No.3
- 回答日時:
そもそもマルチバイトが有効になっているのかとか、php.iniでの文字コード設定はどうなっているかとか、ブラウザとのやり取りで文字コードは制御されているかとか、メールをUTF-8のまま送信していないかとか。
要素がありすぎてなんとも...
No.1
- 回答日時:
>設定をUTF-8 にして
送信部分の制御はできますか?
というかどの関数やライブラリで送信しているかわかりますか?
単にお問い合わせフォームといわれても・・・
とりあえず設定変更ができるなら本文のエンコードをJISにしてみては
どうでしょうか?
この回答への補足
PHPの編集のためにUTF-8にして作成したのですが、エンコードをShift_JISに変更するとページ自体からすべてが文字化けになってしまいます。
確認画面のphp部分を記しますが、
<?php
$okyakusama=$_POST['onamae'];
$mail=$_POST['mail'];
$kakunin=$_POST['kakunin'];
$toiawase=$_POST['toiawase'];
$flg=1;
if($okyakusama=='')
{
print' お名前が入力されていません。<br>';
$flg=0;
}
if($mail=='')
{
print'メールアドレスが入力されていません。<br>';
$flg=0;
}
if($mail!=$kakunin)
{
print'メールアドレスが違います。<br>';
$flg=0;
}
if($toiawase=='')
{
print'お問合わせ内容が入力されていません。<br>';
$flg=0;
}
if($flg==1)
{
print'お名前<br>';
print$okyakusama;
print'<br><br>';
print'メールアドレス<br>';
print$mail;
print'<br><br>';
print'ご用件<br>';
print$toiawase.'<br><br><br>';
print'<form><input type="button" value="戻る" onclick="history.back()" style="width:120px"></form>';
print'<form method="post"action="thanks.php">';
print'<input type="hidden" name="okyakusama" value="'.$okyakusama.'">';
print'<input type="hidden" name="mail" value="'.$mail.'">';
print'<input type="hidden" name="toiawase" value="'.$toiawase.'">';
print'<input name="submit" type="submit" style="width:120px" value="送信">';
print'</form>';
}
else
{
print'<form><input type="button" value="戻る" onclick="history.back()" style="width:120px"></form>';
}
?>
確認画面が表示された時点で、本文の日本語の内容だけが化けています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一時的な文字化けについて
-
携帯サイトをphpで作る際の文字...
-
EclEmmaレポートのエクスポート...
-
phpログファイルの文字化けにつ...
-
CSV出力にHTMLが入ってしまう
-
フォントの色を変えるには?
-
PHPで新しいウインドウで開く命...
-
onedrive にexcelファイルをア...
-
パースエラーとは?
-
ラッパークラスって何ですか?
-
正規表現での最後尾のバックス...
-
ネットワーク初心者です。
-
PHPのif文でその処理を途中で抜...
-
PHPで取得したHTML内のdiv要素...
-
VB.NETのFTPダウンロードについて
-
ImageCreate関数が undefined f...
-
フォームで戻った際に入力済み...
-
トランザクションが原因?DBに...
-
FTPコマンドでディレクトリごと...
-
Web画像コピー不可にする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EclEmmaレポートのエクスポート...
-
ファイルの文字コードを調べる...
-
phpログファイルの文字化けにつ...
-
PHP でデータファイルを別にす...
-
PHPで韓国語の表示がうまくいき...
-
mysql→EUC-JP、php→UTF-8の時の...
-
サイトの文字コード
-
IIS5.1です。PHPをブラウザで開...
-
EUCからshift_jisに書き換えに...
-
外国の掲示板で日本語も表示で...
-
サーバーにアップすると文字化...
-
コード上の埋込み漢字コードの...
-
EUC-JPのサイトをSHIFT-JISに変...
-
PHPでCSVファイルのデータを表...
-
Google Chromeで文字化け
-
海外で作成されたPHPスクリプト...
-
PHPで「®」や特殊文字のエスケープ
-
PHPとMySQLの文字化けの対応法は?
-
検索結果の文字化け
-
ブラウザーで日本語が文字化け...
おすすめ情報