PHP+MySQL で文字化け対策

In: mysql|php

10 11月 2011

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という設定です。それ以外の文字コード環境の人は適宜読み替えてください。

PHP側の対処

サーバー側でデフォルトの文字コードが設定されていなかったり、違う文字コードが指定されていたりする場合は、プログラム内で次のようなmb_系関数で明示的に指定することによって解決するかも知れない。

広告

mb_language("uni");
mb_internal_encoding("utf-8"); //内部文字コードを変更
mb_http_input("auto");
mb_http_output("utf-8");

ただし、これはMySQLとは直接関係がなく、あくまでもそのPHPプログラム内の問題。

MySQLへの対処

SET NAMESする

$dblink= mysql_connect('localhost', dbuser', 'password');
mysql_query("SET NAMES utf8",$dblink);

mysql_set_charsetする

$dblink= mysql_connect('localhost', dbuser', 'password');
mysql_set_charset("utf8", $dblink);

私の環境では、これでうまくいきました。

コメント

1 Response to PHP+MySQL で文字化け対策

トラックバックURL:

Avatar

MasayukiMizusu

11月 8th, 2016 at 10:41 AM

MySqlへの対処 に記述されていた方法でうまくいきました。
ありがとうございます。

Comment Form

About this blog

ここは、SE見習いである私ことdaceloが、日夜習得していくシステム関連の備忘録、phpやWordPressTipsのネタ、あるいはSEOやWebマーケティング関連の雑感を投稿するブログです。 平日は大体毎日投稿しています。土日は休業日です。

カテゴリー

カテゴリー

アーカイブ