• ベストアンサー

xampp,cakephpでの文字化けについてです。

xampp1.7.1、cake_1.2.3.8166での文字化けが解消できません。 以前に質問されている方の記事やサイトで対策を載せている方の情報を見て、php.ini、mycnf、database.phpなどを変更、追加などしてみました。 すべてをUTF-8に揃えるようにしました。(METAで設定できる場合もやってみました)そして、ファイルをhtdocsにおいて、localhostからアクセスしてみたんですが、ブラウザで表示される時点ではシフトJISになっています。 曖昧な質問になっているとは思いますが、原因として思い当たることがある方にアドバイス頂けたらと思います。

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

  • ベストアンサー
回答No.3

> これは、エンコードタイプが、Shift-JISになっているということだと思うんですが、UTF-8で表示するには、どのようにするべきなんでしょうか? UTF-8で出力したいページに関係あるPHPファイルのうち、日本語を含むものを、すべてUTF-8で文字符号化します。その上でheader()にUTF-8を出力するのが、手間はかかりますが、もっとも簡単な方法です。 Terapadや秀丸といったエディタは、文字符号化を変更する機能を備えているので、そういったエディタを利用してみてください。 例えばですが、http://localhost/でリダイレクトされたhttp://localhost/xampp/は、ブラウザはSHIFT_JISで認識して表示しています。/htdocs/xampp内で日本語を使っているファイルは、/htdocs/xampp/lang/jp.phpなので(ひょっとしたら他にもあるかも。。。)、このファイルをエディタでUTF-8に変換して保存します。header()は/htdocs/langsettings.phpで出力しているようなので、ここでUTF-8を出力するように修正します。そうするとブラウザがUTF-8で表示するようになると思います。

nfwkm331
質問者

お礼

試してみたいと思います。 何度も説明していただきありがとうございました。

その他の回答 (2)

回答No.2

> ブラウザの機能を使って手動で「UTF-8」ではなく「シフトJIS」にすると、文字化けが解消されました。 すると、サーバから出力されるHTMLファイル(正確にはHTTPレスポンスのボディ部分)は、SHIFT_JISで日本語がエンコード(文字符号化)されているということです。 今回試してみたファイルのエンコードタイプ(文字符号化方式)が、ひょっとしてShift_JISになっていたりしませんか?もしファイルがPHPなら、きっとheader()でContent-Typeを出力していると思うので、調べてみてはいかがでしょう。

nfwkm331
質問者

補足

header("Content-Type: text/html; charset=Shift-JIS"); で試してみたら、文字化けせずに表示されました。 これは、エンコードタイプが、Shift-JISになっているということだと思うんですが、UTF-8で表示するには、どのようにするべきなんでしょうか?

回答No.1

「ブラウザで表示される時点ではシフトJIS」であって「文字化けする」ということは、ブラウザの機能を使って手動で「UTF-8」にすると、文字化けが解消したりしませんか? もしそうなら、HTTPヘッダー情報を確認してみることをお勧めします。 HTTPヘッダーの「Content-Type」の内容を確認してみてください。 通常は以下の構造となってます。 Content-Type: (メディアタイプ); charset=(文字コード) もしこの文字コードに「shift_jis」が出力されていたなら、たとえMETA要素で「UTF-8」を設定していても、ウェブブラウザは「shift-jis」として文書を解釈します。META要素はあくまでも、HTTPヘッダー情報を補う役割しか与えられていないからです。メディアタイプは「text/html」とか「application/xhtml+xml」など。詳しくは調べてみてください。 ちなみにPHPでヘッダ情報を出力する関数は「header()」です。詳しくはPHPマニュアルをどうぞ。

nfwkm331
質問者

補足

ブラウザの機能を使って手動で「UTF-8」ではなく「シフトJIS」にすると、文字化けが解消されました。 しかし、HTTPヘッダーを確認しようとしたんですが、結局確認できませんでした。 <?php header("Content-type: text/html; charset=UTF-8") ?> というものを、追加すれば良いんでしょうか?

関連するQ&A

専門家に質問してみよう