• 締切済み

PHP 問い合わせフォームの文字化け

はじめまして。 会員648です。 Websiteを作成し、問い合わせフォームで 入力をHTML、チェック・確認画面、送信をPHPで 作成しました。 初心者なので、サイトでの作成事例をまねております。また文字化けは UTF-8を書けば良い ということも サイトにあったので、とりあえずそうしました。 しかし 他のHTMLは正常に表示しますが、HTMLの入力画面、PHPチェック画面 すべて  文字化けします。 入力画面は <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <form method="post" action="check.php"> ですが 文字化け表示となります。 内容確認画面は check.php で <?php // フォームデータが空の場合は処理終了 if (empty($_POST)) { echo "処理終了"; exit; } // セッションの開始 session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> で始まります。 詳しくPHPを知りませんので、どこが問題なのか 教えていただけませんでしょうか。 なお、テスト環境は 自分のPCで Xampp をインストールして、htdocs 配下に すべての HTML, CSS, image,php を 置いております。 なにとぞ よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

noname#244856
noname#244856
回答No.2

>> ソースコードはWin7添付のメモ帳にすべて書いております Windowsのメモ帳はこの道の人なら「絶対に使ってはいけない」と断言するぐらいの粗悪品です。 かろうじてUTF-8エンコーディングには対応していますが、改行コードLFには対応していません。 先ほど申し上げたNotepad++ならWindows系の「CRLF」、MAC系の「CR」、UNIX系の「LF」全てに対応できます。 >> 改行コードをCRLF からLFに変更というのはやり方が分かりません Notepad++の例で説明します。 「編集」→「改行コードを変更」→「UNIXフォーマットに変換」で出来ます。 「フォーマット」→「UTF-8(BOM無し)に変換」とは別の場所にあるので少し気づきにくいかも。 >> 普通にHTMLでメモ帳に記述した部分は動作しているのですが、これもすべてUTF-8で書き戻した方が良いのでしょうか。 そうですね。エンコーディングが混在しているのは非常に気持ち悪いので、UTF-8に統一すべきだと思います。 Notepad++でも変換できますが、複数ファイルを一括変換したいのであればKanjiTranslatorの方が便利ですね。 http://www.kashim.com/kanjitranslator/ ちなみにUTF-8にすることでいろいろメリットはあります。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13113188793 >> .phpのファイルをANSIからUTF-8保存し直してapplication/xhtml+xmlに置き換えてみましたが変化がありません ブラウザでエンコードはどのように認識されていますか? Content-Typeが正しく伝わっていればUnicode(UTF-8)が選択されているはずです。 header関数を使う場合は「自動選択」のチェックの有無に左右されないと思います(多分)。 GoogleChromeの場合は「ツール」→「エンコード」で確認できます。

kaiin648
質問者

お礼

いろいろありがとうございます。  IE10.0を使用しておりますが ブラウザでの認識が UTF-8かどうかは どこで 確認できるのでしょうか。 WINDOWSのメモ帳が 粗悪品というのは 初めて知りました。 作った全部の HTML PHPをNotepad++に 移行 したほうが良いのでしょうね。KanjiTranslator で 一括でやってみます。 また 結果をお知らせいたします。 ありがとうございます。

noname#244856
noname#244856
回答No.1

>> また文字化けはUTF-8を書けば良い ファイル自体のエンコーディングはUTF-8で書いていますか? 意味も分からずにとりあえず指定すればいいと思っていませんか? 個人的にはShift_JISで書いていそうな気がします・・・ こちらのエディタを使えばファイルを編集しながらエンコーディングを変更したりすることも可能で便利なのでぜひお使いください。HTML・CSS・PHP・JavaScriptのシンタクッスハイライトに対応しています。 http://notepad-plus-plus.org/ デフォルトではエンコーディングANSI(Shift_JIS、正確にはCP932のこと)、改行コードはWindowsフォーマット(CRLFのこと)になっていると思うので、UTF-8N(BOM無しUTF-8のこと)、改行コードはUNIXフォーマット(LFのこと)に変更してください。 以下数点自分なりのおすすめ。 1. PHPを使用したXHTMLならばheader関数でContent-Typeをブラウザに知らせたほうがいいと思います。 XHTML1.0ではmetaタグでContent-Typeを書くことが許されていますが、XHTML1.1では禁止されています。 また、header関数で知らせる場合は「XHTML」なので「text/html」ではなく「application/xhtml+xml」にします。 この場合はXML宣言も必要です。 2. // フォームデータが空の場合は処理終了 if (empty($_POST)) { echo "処理終了"; exit; } は少々ぶっきらぼうすぎる気がするので、とりあえずXHTMLは出すようにして、その中にエラーメッセージを配置するようにした方が親切でしょうね。 以下のような関数を使えば変数構造・UTF-8エンコーディングに関するフィルタリングが出来ます。 http://qiita.com/mpyw/items/c39b9ee695a5c2e74627 XHTML1.1での実装例 http://bloggdgd.blog28.fc2.com/blog-entry-287.html

kaiin648
質問者

お礼

早速ありがとうございます。 おっしゃるように 意味も分からず UTF-8と指定しています。 ソースコードは Win7 添付の メモ帳にすべて書いております。これのコードは ANSIとなっていました。 .phpのファイルを ANSIからUTF-8で保存し直して application/xhtml+xml に置き換えてみましたが 変化がありません。 改行コードを CRLF から LFに変更というのは やり方が分かりません。本当にこの道の初心者なので。 それから 普通にHTMLでメモ帳に記述した部分は動作しているのですが、これも すべて UTF-8 で書き戻した方が 良いのでしょうか。 ご指導お願いいたします。

関連するQ&A

  • XHTMLの文字コードのEUC-JPの文字化け

    いつもはHTML4.01で作業をしていて XHTMLはどうも不慣れなせいか 今、外注が作成したHPを修正していて 文字コードをEUC-JPにどうしても変更しなければならないのですが それがうまくいかず、文字化けが発生してます。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> を <?xml version="1.0" encoding="euc-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> このように設定したら文字化けが発生しました。 どのように設定したら文字化けがなくなりますか?

  • charsetとフォーム入力文字

    Htmlファイルの先頭が <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ・・・ で始まります。 このファイルのフォームに入力した文字はUTF-8で送られるのでしょうか。 それともOSの文字コードに依存するのでしょうか?

    • ベストアンサー
    • HTML
  • XHTMLのソースで文字ばけします

    とあるHTMLの本に書いてあるとうりソースをうっていくと <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtyd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"content="text/html;charset=utf-8"/> <title>もりのみや<title/> などのWeb上で文字入力をすると文字化けします。 どうしてでしょうか? インターネットエクスプローラーを使っています。

  • phpのフォーム入力で

    phpの勉強初日なのですが、さっそくつまづいてしまいました。 買った本に沿って、簡単なフォーム入力のhtmlファイルと、 その処理のphpファイルを下記のように作ってみたのですが、上手く行きません。 htmlのフォームからのpostは出来ているようなのですが、 phpファイルがコールされると、phpファイルのソースがそのまま表示されてしまって、 postした文字列がechoされません。。。 初日でつまづいてしまっていきなり挫折しそうです。。。 どなたかお詳しい方、お教えいただけると幸いです。 ■input.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>input</title> </head> <body> <form action="inputphp.php" method="post"> <label for="my_name">お名前:</label> <input id="my_name" type="text" name="my_name" size="15" maxlengh="255" value=""/> <input type="submit" value="送信"/> </form> </body> </html> ■inputphp.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>inputphp.php</title> </head> <body> <?php print($_REQUEST['my_name']); ?> </body> </html>

    • ベストアンサー
    • PHP
  • サイトの文字化け防止

    サイトがたまに文字化けして  「?R???e???c?E???j???[」こんな感じになってしまいことがあります。 これを防止するにはHTMLの文字宣言をどう書けばいいのでしょうか? HTMLをちょっと忘れ気味なんですが、ヘッダーの前にこのように書きました。 <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />

    • ベストアンサー
    • HTML
  • CakePHP文字化けについて

    お世話になります。基本的な質問で申し訳ないのですが、CakePHPのインストールをしたのですが、ブラウザ経由の文字化けが発生しており、困っております。 \app\webrootに以下のHTMLファイルを設置し、ブラウザ経由でアクセスしたのですが、エンコードUTF-8でアクセスすると文字化けが発生してしまいます。エンコードをShift-JISに指定しなおしたところ問題なく表示されるのです。charset=utf-8を指定しているにも関わらず、Shift-JISで表示されるのはどうしてですか。また、UTF-8で正常に表示するには、追加で設定が必要になるのでしょうか。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title>Hello</title> </head> <body> <p>これは、テストページです。</p> </body> </html>

    • 締切済み
    • PHP
  • utf-8 文字化け

    メモ帳でhtmlページを作成してたのですが、日本語を入力してIEで確認したら文字化けになります 原因がわからず困っていました よろしくお願いします IE10 IE 表示 エンコードはutf-8 自動選択にすると日本語表示になります <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ABC</title> <style type="text/css"> </style> </head> <body> <h1>ようこそ</h1> <p></p> </body>

  • XHTML meta属性 文字化け

    XHTMLを勉強しています。 以下のように記述して表示すると タイトルの部分が文字化けします。 何故でしょうか <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>ホームページの作り方</title> <meta name="description" content="初心者のためのホームページテスト" /> <meta name="keywords" content="ホームページ,作成,初心者" /> </head> <body> テスト </body> </html>

    • ベストアンサー
    • HTML
  • 新規にウィンドウを開いたときに文字化けします。

     お世話様になります。 ただいま、HPを作っているのですが、ウィンドウを開くと、文字化けをします。  但し、右クリックで、エンコードを自動選択にすると解消されるのですが、最初から文字化けせずに表示させる方法は無いものでしょうか。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  このような記述方式をとっております。 他にも同じようなHPを作成しているのですが、他は、この記述で全く問題ないのですが、今現在作っているHPに関してのみ、文字化けした状態でウィンドウが開かれます。  皆様、お忙しい中恐縮ですが、解消する方法をご教示頂ければうれしいです。  宜しくお願い致します。

    • ベストアンサー
    • HTML
  • 文字コードについて

    OKWaveのサイトで例えると、 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr" xmlns:og="http://ogp.me/ns#" xmlns:mixi="http://mixi-platform.com/ns#" xmlns:fb="http://www.facebook.com/2008/fbml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> のように文字コードをUTF-8にしてもブラウザで確認すると文字化けして、上手く文字が表示されません。 UTF-8は英文表示になるのか?英文の文字化けのような感じです。 UTF-8を日本語で文字化けしないように表示するには、どうすれば良いものでしょうか? ご存知でしたらご教授願います。