こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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/
関連ファイル ー サンプルコード
に本の中で使われている全てのサンプルが入っています。

投稿日時 - 2012-05-06 00:13:20

QNo.7460034

すぐに回答ほしいです

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

表示させるだけじゃねーじゃん。

確かにデフォルトだと文字化けした。
でも文字化け回避できた。

--------------------------------
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($dbc, "utf8");// ←追加

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2012-05-12 02:31:04

お礼

mysqli_set_charset($dbc, "utf8");、確かに効きました。$dbcを第一引数にもってくる必要があったのですね。

ch11のそのページの「誘拐レポートをお願いします!」でレコードを追加するとまた文字化けしますね。そこも同様に修正が必要みたいです。

いずれにしても、無事解決方法は分かりましたので、ありがとうございました。

投稿日時 - 2012-05-12 07:41:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

/ch11/final/aliens/index.php
にアクセスしたけど、
DBに接続されないお。

接続先のドメインも失効してるお。

sqlファイルも文字化けしてないし。

投稿日時 - 2012-05-11 00:26:15

補足

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

投稿日時 - 2012-05-11 03:31:25

ANo.3

文字化けしてるのは、具体的にどこのファイル?

sqlファイルのことかな?
ch02のaliens_abduction.sqlは文字化けしてませんよ。

投稿日時 - 2012-05-09 00:15:59

補足

ファイルを指定して質問すべきでした。反省します。
おっしゃるように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からデータをとってきて表示しているのでチェックを掛け易いとおもい、具体例としてあげました。)

よろしくお願いします。

投稿日時 - 2012-05-10 09:00:36

ANo.2

直りました。
こちらはMacなので、
miというテキストエディタでUTF-8で上書き保存すると直りました。
htmlもphpもです。

たぶんこのサンプルファイルをzip圧縮したり違うPC間でファイル受け渡しとかしてる間にどっかで壊れたんでしょうねー。
オライリーにクレーム入れたら直してくれるかも。

投稿日時 - 2012-05-06 17:41:42

補足

回答ありがとうございます。
複数のエディタでUTF-8上書き保存してみましたが駄目でした。そもそもその辺は最初にソースをチェックした時に文字コードチェックもしてたのであまり関係ないはずなのですが。

というか、ソースをエディタで直すのはあくまでブラウザ表示関係ですので、私の直面している症状の根本原因とは少し違うような気がします。reggaepuncさんは、DBから抽出している部分の文字データも?(ハテナや文字化け)ではなく正常表示されているのでしょうか?

ちなみに、数件前の別の方の質問(http://oshiete.goo.ne.jp/qa/7455712.html)にも文字化け関係の話がでていて、その方はmysql_set_charset('utf8'); を使って解決してましたが、一応それも試しましたが駄目でした(というか、mySQLの各文字コードは全てUTF8になっているのでソースでmysql_set_charset('utf8');っても改善見込みは初めからないのですが…)。

投稿日時 - 2012-05-07 02:49:16

ANo.1

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

投稿日時 - 2012-05-06 17:29:24

あなたにオススメの質問