●問題
mysqlのサーバとクライアントともUTF-8に設定しているのに、
PHPで返ってきたクエリ結果(日本語)の部分は文字化けとなる。
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
●対策
(1)コネクトの後に、クエリの文字コードを設定
//connect
$s = mysql_connect("localhost", $db_user, $db_pswd);
$s = mysql_connect("localhost", $db_user, $db_pswd);
//クエリの文字コード設定
mysql_set_charset("utf8",$s);
mysql_set_charset("utf8",$s);
(2)さらに、<?phpのあとに、以下を設定するとよいそうです。
mb_language("uni");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("utf-8");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("utf-8");
0 件のコメント:
コメントを投稿