まず、MySQL の文字セットについて話しましょう。 Windows では、my.ini の
PHP コード
を変更することでコードをコピーできます。コードは次のとおりです:
[mysql]
default-character-set=utf8 //クライアントのデフォルトの文字セット
[mysqld ]
default-character-set=utf8 //サーバー側のデフォルトの文字セット
両方をutf8に設定し、「show variables like "character_set_%"」と入力するとします。 ;" MySQL コマンド ライン クライアントでは、次の文字が表示されます:
コードをコピー コードは次のとおりです:
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1 _set_server utf8
character_set_system utf8
UTF-8 を使用する PHP プログラムを使用する場合、データベースからデータを読み取ると、「????」などの文字化けが発生する可能性があります。
解決策は、データベースに接続した後、データを読み取る前にクエリ「SET NAMES UTF8」を実行することです。これは
mysql_query("SET NAMES UTF8");
//PHP のこの文を配置する必要があります。データベースサーバー接続ステートメント [$connection=mysql_connect($db_host,$db_user,$db_psw)or die("サーバーへの接続に失敗しました");] の後、表示は正常になります (情報の文字が表示されている限り)。データベース内では正常です)。
MySQL コマンドラインに移動して「SET NAMES UTF8;」と入力し、「show variables like "character_set_%";」を実行すると、変数「character_set_client」、「character_set_connection」、元々は latin1 だった「character_set_results」がすべて utf8 に変更されており、これら 3 つの変数が問題を引き起こしていることがわかりました。
上記の文は次と同等です:
SET Character_set_client = utf8;
SET Character_set_connection = utf8;
情報入力パス:クライアント→接続→サーバー;
情報出力パス: サーバー→接続→結果。
言い換えれば、各パスは文字セットのエンコーディングを 3 回変更する必要があります。サーバー内の文字化けした出力を例に挙げると、受信接続は latin1 に変換され、受信結果は latin1 に変換され、utf-8 ページで結果が再度変換されます。 latin1 と utf8 など、2 つの文字セットに互換性がない場合、変換プロセスは元に戻すことができず、破壊的なものになります。
ただし、「SET NAMES UTF8」の効果は一時的なものであり、MySQL は再起動後にデフォルトに戻ることをここで述べておく必要があります。
次のステップは、サーバー上の MySQL の構成について説明します。データ送信のエンコーディングの一貫性を確保するために、データベースの読み取りと書き込みのたびに「SET NAMESUTF8」を追加する必要があるのではないでしょうか?これら 3 つの変数がデフォルトで必要な文字セットになるように MySQL を構成できますか?マニュアルにはそれが記載されておらず、オンラインで答えを見つけることができませんでした。したがって、サーバー構成の観点から、そのコード行を省略する方法はありません。
要約: より多くのサーバーで Web ページが正常に表示されるようにするには、「SET NAMES UTF8」を追加することをお勧めします。今この文を追加しなくても、通常どおりアクセスできます。
http://www.bkjia.com/PHPjc/324821.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/324821.html技術記事まず、MySQL の文字セットについて話しましょう。 Windows では、my.ini の PHP コードを変更することでコードをコピーできます。コードは次のとおりです: [mysql]default-character-set=utf8 //クライアントのデフォルトの文字セット [mysqld]...