$theTitle=wp_title(" - ", false); if($theTitle != "") { ?>
WordPressのカスタマイズとプラグイン、CSSテクニック、SEOの話題など。
MySQLにクエリを出して呼び出した結果が「??????」で文字化けしてしまう!
こんな感じで、普通にMySQLのSELECT文で情報を取得しようとしていた訳なんですが、日本語部分が全部「????」に文字化けしてしまう。
$dblink= mysql_connect('localhost', dbuser', 'password'); mysql_set_charset("utf8", $dblink); mysql_select_db('db_name')) { $result = mysql_query('SELECT * FROM `wp_users_test`WHERE `display_name` !=""); $row = mysql_fetch_row($result);
調べてみると、PHP+MySQLの日本語文字化け対策には、色々な原因と対策がある。
ちなみに、ここでの前提は、プログラムもデータベースも共にUTF-8という設定です。それ以外の文字コード環境の人は適宜読み替えてください。
サーバー側でデフォルトの文字コードが設定されていなかったり、違う文字コードが指定されていたりする場合は、プログラム内で次のようなmb_系関数で明示的に指定することによって解決するかも知れない。
mb_language("uni"); mb_internal_encoding("utf-8"); //内部文字コードを変更 mb_http_input("auto"); mb_http_output("utf-8");
ただし、これはMySQLとは直接関係がなく、あくまでもそのPHPプログラム内の問題。
$dblink= mysql_connect('localhost', dbuser', 'password'); mysql_query("SET NAMES utf8",$dblink);
$dblink= mysql_connect('localhost', dbuser', 'password'); mysql_set_charset("utf8", $dblink);
私の環境では、これでうまくいきました。
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。