締切済み

PHPとMySQLで文字化けしてしまいます。

  • すぐに回答を!
  • 質問No.5370079
  • 閲覧数75
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

いつもお世話になっています。

レンタルサーバー(サクラインターネット)で、
MySQL5.1を設定し、データベースを使ったwebサイトをアップしたのですが、
PHP部分の一部に文字化けしてしまいます。
文字コードは、htmlの上部で、UTF-8に設定しています。
システムは、PHPとMySQLで組んであります。
ローカルでは正常に動いているために、理由がわかりません。
どなたか解決方法があれば、教えて下さい。
宜しくお願いします。

回答 (全3件)

  • 回答No.3

ベストアンサー率 43% (833/1926)

質問番号:5375000 と同じ内容を質問しており、マルチポストになっています。どちらかを閉じるか、両方を閉じて、提示を求められている情報を明記するようにしてください。

MySQLのSQLを実行できる環境で、show文を実行し、結果を教えてください。

(1)有効になっている文字コードの表示
show variables like '%char%'

(2)表定義内容の表示
show create table 表名

また、以下についても教えてください。

(1)検索条件で指定している列のデータ型
(2)前後の空白をどのように取り除いているのか
(3)「完全一致」とは、「=」でかLIKEでか
(4)検索条件なしで検索したら、想定通りのデータが格納されているか

「xxしている」と自己判断するのでなく、他人が客観的に判断できるように、具体的なコード等を提示してください。
4つの行動でOK-チップをためよう
  • 回答No.2

ベストアンサー率 60% (65/107)

MySQLの接続照合順序は正しいですか。??

>文字コードは、htmlの上部で、UTF-8に設定しています。

勘違いされているようですが、データーベース・PHPから吐き出すのは関係ありません。
この設定は、あくまでもHTMLのみです。
ですから、「PHP部分の一部に文字化けしてしまいます。」となります。

>ローカルでは正常に動いているために、理由がわかりません。

サーバー環境と同じバージョンですか。??

もう少し、情報がないと厳しいです。
私共は、貴方のサーバー環境が見えませんので・・・。
お礼コメント
noname#99124

回答ありがとうございます。
MySQLの接続照合順序というのは、MySQLへの接続とデータベースの選択のことでしょうか?
この二つでしたら出来ていると思います。

環境は、サーバの方はMySQL5.1で、自分のパソコンにインストールされているのはMySQL5.0.45-win32なので、同じではありません。

「PHP部分の一部に文字化け」というのは、あるページからPHPでデータべースに登録した内容を、別のページで、PHPで呼び出し、表示させているのですが、その情報が文字化けしたり、空白になっていたりしていました。
いろいろ検索したところ、それはMySQLのクライアント側の文字コードがこちらの文字コードであるutf-8とは別のものになっているからなのではないかと思い、mysql_set_charset()を使用してみたところ、文字化けと空白になってしまうという問題は解決できました。
しかし、今度はまた新たな問題が発生しました。
先程の、PHPでデータベースから呼び出した情報は、一つのテーブルの全ての情報を呼び出していたのですが、また別のページで、条件にあうレコードだけを取り出そうとしています。しかし、条件に合うレコードがあるはずなのに、PHPのmysql_query()で条件を指定したSELECT文を渡してmysql_num_rows()を出力すると0となってしまいます。
データベースに情報を登録するときに、前後の空白は取り除いてあり、検索する文字列の前後の空白も取り除いています。
これも、文字コードが原因なのでしょうか。
もしよろしければ、こちらの回答もお願いします。
投稿日時 - 2009-10-17 15:22:41
  • 回答No.1

ベストアンサー率 51% (3827/7415)

>一部に文字化け

具体的な症状があれば書いた方がよいと思います。

いまの情報だと大雑把な想像でしか回答できませんが、
MySQLの言語設定が間違っている可能性があります。
お礼コメント
noname#99124

回答ありがとうございます。
おっしゃられているように、MySQLの言語の設定に問題があったのだと思います。

「PHP部分の一部に文字化け」というのは、あるページからPHPでデータべースに登録した内容を、別のページで、PHPで呼び出し、表示させているのですが、その情報が文字化けしたり、空白になっていたりしていました。
いろいろ検索したところ、それはMySQLのクライアント側の文字コードがこちらの文字コードであるutf-8とは別のものになっているからなのではないかと思い、mysql_set_charset()を使用してみたところ、文字化けと空白になってしまうという問題は解決できました。
しかし、今度はまた新たな問題が発生しました。
先程の、PHPでデータベースから呼び出した情報は、一つのテーブルの全ての情報を呼び出していたのですが、また別のページで、条件にあうレコードだけを取り出そうとしています。しかし、条件に合うレコードがあるはずなのに、PHPのmysql_query()で条件を指定したSELECT文を渡してmysql_num_rows()を出力すると0となってしまいます。
データベースに情報を登録するときに、前後の空白は取り除いてあり、検索する文字列の前後の空白も取り除いています。
これも、文字コードが原因なのでしょうか。
もしよろしければ、こちらの回答もお願いします。
投稿日時 - 2009-10-17 15:30:11
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ