php mysqlの文字化け対処法

このQ&Aのポイント
  • phpとmysqlを使った検索システムで、文字化けが起きる問題が発生しています。phpmyadminでの表示は正常なのに、サイトに表示すると文字化けが発生します。mysql_query()を使う方法は脆弱性の問題があるためおすすめされていません。具体的な対処法をご教示ください。
  • phpとmysqlを使った検索システムで文字化けが起きています。phpmyadminで表示は正しくできているのに、サイトに表示すると文字化けが発生します。脆弱性の問題からmysql_query()を使うことはおすすめされていません。どのように対処すればいいでしょうか?
  • phpとmysqlを使った検索システムで文字化けが起きます。phpmyadminでは正しく表示されるのに、サイトに表示すると文字化けが発生します。mysql_query()を使う方法は脆弱性の問題からおすすめされていないようです。対処法はありますか?
回答を見る
  • ベストアンサー

php mysqlの文字化け(レンタルサーバーにて

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

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>脆弱性の問題からおすすめしないと書いてありました。 mysql_set_charset()は?バージョンの問題(phpが5.2.3未満とかMySQLが5.0.7未満とか)がなければ、mysql_set_charsetでどうぞ。 http://php.net/manual/ja/function.mysql-set-charset.php #というか、非推奨のMySQL関数ではなく #MySQLiもしくはPDOを使うべきです。 >そうすると表示する動作そのものにエラーが発生したりでした。 「エラーが発生した」だけでは状況がわかりません。エラーメッセージを転記してください。

関連するQ&A

  • PHPとMySQLで文字化けします

    <?php $con=mysql_connect("localhost","oxwar2","chono3"); $db=mysql_select_db("oxwar2",$con); $query="insert into japan(id,title,price)values(1,'絵本',1000)"; $result=mysql_query($query,$con); if($result){ print "OK"; } ?> として、実行すると上手くいきますが、phpMyadminで見ますと、日本語の部分だけが文字化けしております。 これを直すにはどうしたらよいのでしょうか。 文字コードはUTF8で作りました。色々試しても同じです。 どのようにしたらよいのでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • 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
  • 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
  • Mysqlで文字化けします

    はじめまして、Mysql初心者です。 Mysqlをインストールして簡単なsql命令を実行したのですが、画面に表示される日本語が文字化けします。MyODBCでACSESSからDBを参照したらやはりテーブル内の日本語が化けていました、この程度の情報しかないのですがどなたか教えて下さい、ヒントでも結構です

    • ベストアンサー
    • MySQL
  • Mysqlの文字化けについて

    現在さくらのレンタルサーバを使用しています。 MysqlをPDOからアクセスしているのですが、日本語入力をすると文字化けしてしまいます。 検索した結果、文字コードの問題が多く報告されていたため、 以下のサイト等を参考に、PHPMyAdminで文字コードをutf8_general_ciにして PDOでも文字コードをutf8にしてみました。 しかしながら、PDOから日本語をinsert等するとDB上で「??」が表示されてしまします。 http://d.hatena.ne.jp/sdhr/20100806/1281095806 非常に困っているので、どなたか解決策をご存知でしたらご教授お願い致します。

    • ベストアンサー
    • MySQL
  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • MySQL 文字化けについて(PHP)

    いつもお世話になっております。 PHPを使用してMySQLからデータを出し入れする際に文字化けが発生し原因がわからず、大変困っております。 MySQL 4.1.18(クライアント 4.1.21) MySQL文字セット UTF-8 Unicode (utf8) 様々なHPを検索して、下記のような一文を入れれば大丈夫と思ったのですが、それでも文字化けは改善されませんでした。 mysql_query("SET NAMES ujis"); 上記文はmysql_connectの直後に記述しております。 INSERT文、SELECT文どちらに不備があるのかわかりません。 ご教授お願い致します。 記述プログラム:(INSERT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "insert into T_YOYAKU values ('1','A','1','あいうえお')"; mysql_query($sql) 省略・・・ 記述プログラム:(SELECT文) /********************************* * MySQL接続 ********************************/ // DB Connect $db = db_connect(); // DB Select select_db($db); // Set Names mysql_query("SET NAMES ujis"); /********************************* * INSERT文 ********************************/ $sql = "select * from T_YOYAKU"; if ( $rs = mysql_query($sql) ) {

    • ベストアンサー
    • MySQL
  • php / MySQL で文字化け

    XAMPP 1.8.3 (PHP:5.5.11 & MySQL5.6.16)を、手元の2台のPCに同様に 構成したつもりなのですが、 マシンA:日本語表示に問題なし マシンB:DBデータから取り込んだ日本語だけが、???に化ける という状況です。 ・OSバージョン・ブラウザバージョンは同一、 ・PHP設定ファイル:php.ini は、2台のマシンで差異なし(diffで確認済) ・MySQL設定ファイル:my.iniは、2台のマシンで差異なし(diffで確認済) なのですが、他に確認すべき個所はありますでしょうか? マシンBの文字化け状況ですが、 (1)DBテーブルから呼び出した日本語だけが???に化ける (2)その他Webページ上の日本語は問題なし (3)phpMyAdminで当該のテーブルを参照すると、日本語は正常に表示されている 他に確認すべき個所はありますでしょうか?

  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

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

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

専門家に質問してみよう