phpチュートリアルの中国語文字化け問題とmysqlチュートリアルの中国語文字化けの解決策
<頭>
$mysql_server_name='localhost';
$mysql_username='root';
$mysql_password='000000';
$mysql_database='lib';
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
$sql="mytb から名前、年齢を選択";
print($conn);
$rs=mysql_db_query("lib","select * from mytb",$conn);
print("
");
while($row = mysql_fetch_object($rs)){
print ($row->name.":".$row->age."
");
}
mysql_close($conn);
?>
次のように表示されます:
リソースID #1
dd:54
ddd:8
??:15
???:25
??:32
MySQLエンコーディング:utf8、gbkを試しました。 mysql フォントとコマンド ライン表示は両方とも正しいです。
補足質問:
文字化けしたコード:
???:15
???:25
??:32
これらの行では、データベース チュートリアルの値が漢字で表示されています。
解決策:
$rs=mysql_db_query("lib","select * from mytb",$conn);
の前に
を追加します
mysql_query("set names gb2312");または mysql_query("set names gbk");
文字化けの解決方法を見てみましょう
マルチバイト エンコーディングをサポートする .gb2312、gbk、utf8 などの文字セットは中国語の文字を保存できます。gb2312 の中国語の文字数は gbk よりもはるかに少なく、gb2312、gbk などはすべて utf8 でエンコードできます。
2. 'character_set_%' のようなコマンド show variables を使用して、現在の文字セット設定を表示します。
mysql> 'character_set_%' のような変数を表示します;(ここで設定されている文字はgb2312です)+--------------------------+----------+
| 変数名 |値 |
+--------------------------+----------+
| キャラクターセット_クライアント |
| 文字セット接続 |
| 文字セットデータベース | gb2312 |
| 文字セットファイルシステム |
| 文字セット結果 | gb2312 |
| 文字セットサーバー |
| 文字セットシステム |
+--------------------------+----------+
7 行セット (0.02 秒)
中国語の文字化けを表示するには、character_set_connection とcharacter_set_results の 2 つの主な設定があります。
2 つの設定が中国語のエンコーディングをサポートしていない場合、文字化けが表示されます。 setcharacter_set_results =gbk; を設定して中国語のエンコーディングを設定します。
Three.set names charset_name; クライアントのすべての文字セットを一度に設定できます。
http://www.bkjia.com/PHPjc/630781.html