PHPとMySQL開発中のページの文字化けの発生と解決


1、ファイルコード:ページファイル(.html、phpなど)自体はどのようなコードで保存されていますか?メモ帳とDreamweaverはページを開くと自動的にファイルコードを認識しますので、問題がありません。ZendStudioは自動的にコードを認識しません。最初のオプションの配置によって、ある種類のコードでファイルを開くだけで固定されます。作業中に注意しないと、エラーコードでファイルを開けて、修正して保存したら、文字化けが発生します。2、ページ申明コード:HTMLコードHEADでは、が使えます。 http-equiv=「Conttentt-Type」 content="text/html charset=「XXX」 />ブラウザのウェブページにはどのようなコードが採用されていますか?現在の中国語サイトの開発では、XXXは主にGB 2312とUTF-8の2種類のコードを使用しています。3、データベース接続コード:データベース操作をする時、どのコードでデータベースとデータを転送するかということです。ここで注意したいのは、データベース自体のコードと混同しないことです。たとえば、MySQL内部はデフォルトではlatin 1コード、つまりMysqlはlatin 1コードでデータを保存し、他のコードでMysqlに転送するデータはlatin 1コードに変換されます。WEB開発において、コードのどの部分が関与しているかを知ると、文字化けが発生した原因が分かります。上記3つのコードの設定が一致していないため、各種コードのほとんどはASCII対応のものです。だから、英語の記号は現れないです。中国語は不運です。以下はいくつかのよくあるエラー状況と解決です。1、データベースはUTF 8符号化を採用していますが、ページ申明符号化はGB 2312で、これは最も一般的な文字化けの原因です。この時PHPシナリオで直接Selectデータが出てくるのは文字化けです。調べる前にまず使うべきです。mysql_query(「SET」 NAMES GBK");  を使用してMYSQL接続符号を設定し、ここで設定された接続符号と一致するようにページ申明符号化(GBKはGB 2312の拡張)する。もしページがUTF-8のコードなら、使えます。query(「SET」 NAMES UTF 8");  UTF 8は一般的なUTF-8ではなくUTF 8です。ページに明記されているコードがデータベース内部のコードと一致すれば、接続コードを設定しなくてもいいです。注:実際にMYSQLのデータ入出力は上記より複雑です。MYSQLプロファイルmy.iniにはデフォルトの2つのコードが定義されています。それぞれ「client」のdefaultです。 -character-setと[mysqld]のdefault-character-setは、デフォルト時のクライアント接続とデータベース内部で使用されるコードをそれぞれ設定します。上で指定したコードはMYSQLクライアントがサーバに接続する時のコマンドラインパラメータcharacter_です。setclientは、MYSQLサーバが受信したクライアントデータは、デフォルトの符号化ではなく、どのような符号化かを教えます。2、ページの説明符号化とファイル自体のコードが一致しないということはめったに発生しません。コードが一致しないと、アメリカ人がページを作る時にブラウザで見たのは文字化けです。詳細は公開後にバグを修正してページを開けて保存します。あるいは、いくつかのFTPソフトウェアを使って直接オンラインでファイルを修正します。例えば、CuteFTPは、ソフトウェアコード構成が間違っていて、符号化が間違っています。3、いくつかの仮想ホストを借りる友達は、上記3つのコードが正しく設定されているのに、文字化けがあります。例えば、ウェブページはGB 2312でエンコードされています。IEなどのブラウザは、いつもUTF-8と識別されています。ウェブページのHEADでは、GB 2312であると説明されています。手動でブラウザのコードを変更してGB 2312として表示しています。サーバーのApacheがサーバー全体のデフォルトコードを設定しています。httpd.com nfにAdd Default Charetが追加されています。 UTF-8です。この時、サーバーはまずHTTPヘッダをブラウザに送信します。優先度はページより高いです。解決方法は2つあります。管理人に自分の虚数機を配置するリガの前のAddDefault Charetをお願いします。 GB 2312は、グローバル構成をカバーしたり、自分のディレクトリのhttaccessに配置されます。