• ベストアンサー
  • すぐに回答を!

Head First PHPサンプルコード文字化け

よろしくです。 下記のphpの本を参考にプログラムを勉強しているのですが、 サンプルコード(完成品)の日本語部分(DBがソースの日本語部分全て)がすべて文字化けしてしまいます。 この本は文字化け対策を強みにした本なのですが、実際のサンプルコードがこんな状態なので非常に困っています。 例えば、表示サイトページ内に3時間というデータが表示される予定だとすると、3??(ハテナマーク)のように表示されます。 ちなみに文字化け後、ブラウザ、DB、phpの文字コード設定はutf8統一であることは確認しました。apacheの文字コードはわかりません。 テスト環境は、自宅のローカルサーバーと、某レンタルサーバーの2つでどちらでも文字化けです。 この本を試した方、もしくはちゃっちゃっと下記サイトからサンプルをとって試していただける方、どうかレスをお願いします。 著書内ではこれでどうだというくらい日本語対策をうたっているのに、全サンプルがNGとは、あまりに不思議な現象で、とても困っています。 どうかよろしくお願いします。 『Head First PHP & MySQL――頭とからだで覚えるWebアプリケーション開発の基本』 Lynn Beighley, Michael Morrison 著、佐藤 嘉一 訳 2010年03月 発行 672ページ ISBN978-4-87311-444-6 http://www.oreilly.co.jp/books/9784873114446/ 関連ファイル ー サンプルコード に本の中で使われている全てのサンプルが入っています。

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数428
  • ありがとう数1

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

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

表示させるだけじゃねーじゃん。 確かにデフォルトだと文字化けした。 でも文字化け回避できた。 -------------------------------- // Connect to the database $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); mysqli_set_charset($dbc, "utf8");// ←追加

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mysqli_set_charset($dbc, "utf8");、確かに効きました。$dbcを第一引数にもってくる必要があったのですね。 ch11のそのページの「誘拐レポートをお願いします!」でレコードを追加するとまた文字化けしますね。そこも同様に修正が必要みたいです。 いずれにしても、無事解決方法は分かりましたので、ありがとうございました。

関連するQ&A

  • PHP+MYSQLでの文字コードによる文字化け

    お世話になっております。 PHP+MYSQLの構成でDBに登録、DBから参照→表示といったアプリケーションを作っているのですが質問があります。 文字コードを意識せずに、”Shift-JIS”でPHPやhtmlのコードを書いていたのですが、仕様上問題があることに気づいたので今まで書いたソースの文字コードを”EUC-JP”に変更することになりました。 フリーで複数のテキストファイルをShift-JIS→EUCに一括変換するソフトがあるので、そのソフトを使ってEUCの文字コードに変換したところ、ソース中の日本語(全角)が文字化けしてしまいました。 #どの変換ソフトを使っても同様の結果になります ブラウザー上で表示すると問題ありませんが、今後ソースをいじるときに非常に不便です。目的としては、「ソースの文字コードをShift-JISに変換」かつ「ソース内の日本語(全角)の文字化けを起こさない」方法をご存知の方は是非ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • phpのソースによって、文字化けしてしまいます

    お世話になっております。 PHPとMySQLを利用しております。php.iniでPHP 、my.cnfでMySQL、それぞれの文字コードを「日本語EUC」に設定し、問題なく動作しております。 ただ、PHPスクリプトのソースコードが日本語EUCでない場合、出力結果が???????のように文字化けしてしまいます。 PHPスクリプトのソースの文字コードが、日本語EUCであっても、シフトJISであっても文字化けしないようにするには、どのように設定したらよいでしょうか。 初心者であり、困っております。 どなたか、お助けいただくことはできますでしょうか。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQL+PHP文字化け

    PHPからMySQLを使っています。 MySQLもPHPも文字コードはutf8を使っているのですが、PHPMyAdminから入力した日本語を普通に読み出すと文字化けして「??????」になってしまいます。また、自作コードからの日本語のinsertもできません。 しかし、「set character set utf8」を先に実行しておくといずれも上手くいきます。 これは一体どういうことなのでしょうか? そもそも全てutf8で統一しているつもりなのですが、MySQLかクライアントのどちらかで他のコードが使われているということなのでしょうか? MySQLはstatusなどを見てもutf8になっているので、どちらかと言えばクライアントの方が臭うのですが、よくわかりません。 どうか知恵をおかしください。

その他の回答 (4)

  • 回答No.4

/ch11/final/aliens/index.php にアクセスしたけど、 DBに接続されないお。 接続先のドメインも失効してるお。 sqlファイルも文字化けしてないし。

共感・感謝の気持ちを伝えよう!

質問者からの補足

dbは事前にご自分の環境に構築しないと駄目ですよ その点はどの書籍でも同じです db環境を作って、sqlファイルからデータをインポートして、やっとdbをphp用に使えるようになります

  • 回答No.3

文字化けしてるのは、具体的にどこのファイル? sqlファイルのことかな? ch02のaliens_abduction.sqlは文字化けしてませんよ。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ファイルを指定して質問すべきでした。反省します。 おっしゃるようにch02は確かに文字化けしていません。ch02のfinal-report.htmlは送信フォームなのでphpやdbとは無関係で、report.phpはhtmlから送信されてくるデータを表示するのでdbのデータは一切、表示に使われていません。ですからch02はこの質問にはあまり関係ないです。 (ch02にはsqlファイルもありますが、あれは表示にはつかわれていないので本件にはあまり関係ありません。) >sqlファイルのことかな? dbのデータを表示すると文字化けするので、sqlファイルは関係のではと怪しんでいるところです。 具体例をあげますと、ch11-finalのindex.phpが、dbからのデータ部分が文字化けします。 (その他ch8とかとにかくdbデータを表示しているサンプルは全体的にですが、ch11の例がindexページ内ですぐにdbからデータをとってきて表示しているのでチェックを掛け易いとおもい、具体例としてあげました。) よろしくお願いします。

  • 回答No.2

直りました。 こちらはMacなので、 miというテキストエディタでUTF-8で上書き保存すると直りました。 htmlもphpもです。 たぶんこのサンプルファイルをzip圧縮したり違うPC間でファイル受け渡しとかしてる間にどっかで壊れたんでしょうねー。 オライリーにクレーム入れたら直してくれるかも。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。 複数のエディタでUTF-8上書き保存してみましたが駄目でした。そもそもその辺は最初にソースをチェックした時に文字コードチェックもしてたのであまり関係ないはずなのですが。 というか、ソースをエディタで直すのはあくまでブラウザ表示関係ですので、私の直面している症状の根本原因とは少し違うような気がします。reggaepuncさんは、DBから抽出している部分の文字データも?(ハテナや文字化け)ではなく正常表示されているのでしょうか? ちなみに、数件前の別の方の質問(http://oshiete.goo.ne.jp/qa/7455712.html)にも文字化け関係の話がでていて、その方はmysql_set_charset('utf8'); を使って解決してましたが、一応それも試しましたが駄目でした(というか、mySQLの各文字コードは全てUTF8になっているのでソースでmysql_set_charset('utf8');っても改善見込みは初めからないのですが…)。

  • 回答No.1

ほんとだ。ブラウザでアクセスすると文字化けしてるwww ひどいwww ちょっとまって。調べるから。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • phpMyAdmin内での文字化け

    サーバはさくらインターネットを利用してます。 レンタルサーバから専用サーバに移転したのですが、 専用サーバではphpMyAdminで日本語データの文字化けが起きます。 専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、 MySQLの文字セット UTF-8 Unicode (utf8) MySQLの接続照合順序 utf8_unicode_ci DB の照合順序 utf8_unicode_ci レコードをINSERTする際、下記のように文字コードを指定し、 $sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP"); execute_sql($con, $sql); 実行したら、phpMyAdmin内で日本語データが文字化けしました。 サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。 DB の照合順序をutf8以外(ujis_japanese_ciなど)として、 DBを作った場合、レコードをINSERTしたら、サイト内のDBデータも phpMyAdmin内データもどちらも日本語が文字化けします。 また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、 専用サーバのphpMyAdminからインポートした場合、 読み込むDBデータファイルの文字コードをUTF-8にしなければ、 phpMyAdmin内で日本語データが文字化けしてしまいます。 ただ、UTF-8にしてインポートしてもphpMyAdmin内では 文字化けしませんが、サイト内で表示しているDBデータは 文字化けします。 専用サーバのphpMyAdminから データを日本語の文字列に編集・更新したら、 phpMyAdmin内ではそのデータに関しては文字化けなく表示されますが、 サイト内ではそのデータは文字化けしてしまいます。 専用サーバ情報は下記の通りです。 【専用サーバ】 OS:CentOS 5 Apache 2.2.3 PHP5.1.6 DBサーバ:MySQL 5.0.77 アップしているファイルの文字コード:EUC 分かる方、ご回答、よろしくお願いいたします。

    • 締切済み
    • PHP
  • html + php 文字化けの問題【utf-8】

    文字化けが直りません。どうしたらいいでしょうか? phpとmysqlをつかってデータベース表示させるページなのですが、データベースの文字コードがutf-8なのでphpファイルの文字コードをeucからutf-8に変更しました。そうするとデータベースは正常に表示されるのですが、htmlの部分は全て「?」になってしまいます。 文字コードの変換はEmEditorで変更し、変化が見られなかったので、変換用のフリーソフトを使ってみましたが、やっぱり文字化けの状態です。どなたかご教授ください。お願いします。

    • 締切済み
    • PHP
  • PHP4からPHP5にしたときのDB文字化けについて

    よろしくお願い致します。 すでに、PHP4で作っていたサイトで、DBにもいろいろと登録していたのですが、PHP5にしたい事情が出てしまい、PHP5にしました。 すると、すでに登録されていた、DBの内容が文字化けしてしまいました。 PHP4(UTF8)+MySQL5(UTF8) → PHP5(UTF8)+MySQL5(UTF8) 情報足りませんでしたら申し訳ないです、申し付けて下さい。 phpMyAdminから見たときは、すでに入っていたDBの内容は文字化けはしていないのですが… 次にPHP5で新しく登録した場合は、サイトでの表示は文字化けしないのですが、次はphpMyAdminで見ると文字化けしていました。 php.iniの設定も同じにしてます、Apacheのconf設定なども見たのですが、文字化けは解消しませんでした。 よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPで文字化けします

    PHPでリンク集を登録、表示するプログラムを考えています。 登録、削除などは出来るのですが、表示部分が文字化けします。 登録内容をcsvに保存して、PHPから読み込んで表示する仕組みなのですが、csvから読み込む部分以外は正常に表示されますが、csvから読み込んだ部分が文字化けします。 サーバーは共用なので、管理者に問い合わせた所、サーバの通常文字コードはUTF-8との事、.htaccess ファイルで EUCへの変換方法を教えてもらったので、試しましたが、csv内に登録した時点で、文字化けした状態で記録されているようで、PHPファイルをsjisにして試しても、EUCにして試しても結果が同じです。 フォームからcsvに登録する時の文字コードを設定したりはできないのでしょうか。 また、公開されているスクリプトで相互リンク登録が出来るようなプログラムをご存知であれば、お教えください。

    • 締切済み
    • PHP
  • PHPの文字化け

    PHPでチャットを作っているのですが、どうしても、文字化けを起こしてしまいます。 文字化けを起こす場所は、入室するときの名前と、ログを読み出すときです。 それ以外は正常に動作しているように見えます。 文字化けする文字は、日本語だけで、アルファベットは問題ありません。 「テスト」と入力するとFirefoxでは「???鴻??」といった用になって、IEでは「・・"鴻ヨ」というように文字化けの仕方が違うようです。 文字コードはEUCです。 サーバーはwindowsでローカルサーバーを立てています。 サーバーの設定の問題でしょうか? アドバイスをよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで文字化けしないようにする方法

    PHPの本に記載のあるサンプルを実行したら、結果が文字化けしてしまいました。初歩的な質問ですみません、文字化けを解消するには、最初にどのような記述をすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • php mysqlの文字化け(レンタルサーバーにて

    phpとmysqlを使って検索システムを作りました。 サーバーはお名前.comを使っています。 phpmyadminにデータを入れた時、きちんと日本語で表示されます。 しかし、実際にDB内の情報をサイトに表示した時に文字化け(??????といった文字化け)が起きます。 いろいろ調べてみるとmysql_query()を使う方法があるみたいなのですが、脆弱性の問題からおすすめしないと書いてありました。 とはいえ、一度mysql_queryで試してみたのですが、そうすると表示する動作そのものにエラーが発生したりでした。 整理すると以下の状況です。 ・phpmyadminでDB内を確認すると、きちんと日本語が表示されていた。 ・しかしサイトにDB内情報を表示すると????と文字化けを起こしていた。 ・mysql_query()は使えなかった。 具体的な対処法として、どうしたらいいものか、ご教示いただけないでしょうか?

    • ベストアンサー
    • PHP
  • さくらインターネットのレンタルサーバーを使って、phpのコード

    さくらインターネットのレンタルサーバーを使って、phpのコード を動かそうとしています。 しかし、文字化けが発生してしまいます。mysqlの文字コードの 設定が原因かと思うのですが、どのようにすれば解決できるのでしょうか? お答え頂けますと幸いです。

  • PHP+MySQLで文字化け

    DBからデータを持ってきてPHPで表示させると文字化けしてしまいます。 PHPはEUC-JPです。 mb_convert_encoding($message, "EUC-JP")としてみても文字化けしてしまいます。 どなたか対処方法教えていただけたら嬉しいです。

    • 締切済み
    • PHP
  • phpMyAdminで文字化け

    phpMyAdminで日本語が文字化けします。 PHPの文字コードがUTF-8で phpMyAdminのconfig.inc.phpの文字コードもUTF-8にしています。 phpMyAdminのバージョンは3.1.4です。 どのようにしたら日本語が文字化けしないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP