phpはmysqlの文字化けを読み取り、set names XXXで解決する原理で共有する。
まずMySQLの文字セットの問題を言います。Windowsでは、my.ini内のPHPコードを修正することで、2つをutf 8に設定し、MySQL Command Line Cientに「show variebles like」を入力します。setsu";下記の文字が見られます。もしUTF-8のPHPプログラムを使ってデータベースからデータを読み取ると、「????」あるいは他の文字化けです。解決策は、データベースに接続した後、データを読み取る前に、まず一つのクエリ「SET NAMES UTF 8」を実行します。つまりPHPにmysql_です。query(「SET NAMES UTF 8」);/この文は必ずデータベースサーバに置いて文を接続します。connect($db_)ホット、db_user,db_psw)or die(「サーバ接続失敗」);その後は正常に表示されます(データベース内の情報の文字が正常であれば)。MySQLコマンドラインに「SET NAMES UTF 8」を入力し、そして「show variebles like」を実行します。setsu";latin 1の元の変数を見つけました。setclient、character_setconnection、character_setこの3つの変数がいたずらをしています。マニュアルを見ると、上の文はSET character_に等しいです。setclient=utf 8SET character_setresults=utf 8;SET character_setconnection=utf 8;この3つの変数の役割を見てください。情報入力経路:client→connection→server;情報出力経路:server→connection→reults。つまり、各パスは3回にわたって文字セットの符号化を変更します。文字化けが発生した出力を例にとって、server里utf 8のデータは、入力connectionがlatin 1になり、レリウスがlating 1になり、utf-8ページがまたreultsを転送する。2つの文字セットが互換性がない場合、例えば、latin 1とutf 8は、変換プロセスが不可逆的であり、破壊的である。ここで声明したいのですが、「SET NAMES UTF 8」の役割は一時的なもので、MySQLが再開されたらデフォルトに戻ります。次にMySQLのサーバー上の配置について話します。毎回データベースの読み書きに「SET NAMESUTF 8」を加えて、データ転送の符号化が一致するようにします。MySQLを設定することで、その3つの変数のデフォルトを達成することができますか?マニュアルには言っていませんでしたが、ネットでも答えが見つかりませんでした。ですから、サーバーの配置の観点から、その行のコードを省略することはできません。まとめ:あなたのホームページをより多くのサーバーに正常に表示させるために、「SET NAMES UTF 8」を追加しましょう。今はこれを追加しなくても正常にアクセスできます。