- ベストアンサー
コード上の埋込み漢字コードの文字化け
PHP のソースコード上に埋め込んでいるべた書きの2バイトコードが 文字化けを起こしてしまいます。以下、経緯を含め詳しく書きます。 1.HTMLのFORMよりデータを入力。(toiawase.html) 2.PHPにて、入力データをWebブラウザ上に表示して確認。(mail_kakunin.php) 3.PHPにて、確認済みのデータをmail()関数にて送信。(mail_send.php) 上記の状態で正常動作を確認。 「1」の toiawase.html にて、charsetをUTF-8にする必要があり 下記のように charset のみ書き換えました。 <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> すると以下の不具合が発生しました ・上記の「2」の部分ですでに入力したデータのみ文字化けを起こす。 ・当然、「3」にての送信でも入力データのみ文字化けして送られる。 よって、「2」のmail_kakunin.php にも以下の分を追加しました <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> すると以下のような不具合が発生しました ・上記の「2」の部分で入力データは mb_convert_encoding() で UTF-8 に変換し、文字化けしませんが、今度はPHPのコーディングでべた書きの2バイト コードが文字化けを起こす。 HTML上で、UTF-8 の漢字コード指定なので、PHPにべた書きの2バイトコードも UTF-8 で出力する必要があるのですが、やり方がわかりません。 ご存知の方教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ファイルの文字コードはなんですか? ファイルの文字コードと文字列を記入する際の 文字コードが違うのでは?
その他の回答 (1)
- oka5130
- ベストアンサー率66% (35/53)
1.全てのファイルを UTF-8 で保存していますか? 2.php.ini で mbstring.http_output が指定されていて、UTF-8 以外になっていませんか? 全てのファイルを UTF-8 にするのであれば、mb_convert_encoding() は不要なはずです。
お礼
1番でビンゴでした。漢字コードを S-JISでファイル自体を保存していたので起こった文字化けでした。 2番は、メール送信するために、S-JISに変更する必要があるのです。DB登録ではEUC-JPに^^; ご指摘ありがとうございました。
お礼
ご指摘ありがとうございます。プログラムや環境の設定に気をとられて、エディタでベタ書きする文字コードのことをすっかり忘れていました。 S-JISになっていたので、UTF-8にしたらちゃんと表示されました。 ありがとうございました。