ホームページ  >  記事  >  バックエンド開発  >  PHP+MYSQL_PHP チュートリアルで文字化けした疑問符の解決策

PHP+MYSQL_PHP チュートリアルで文字化けした疑問符の解決策

WBOY
WBOYオリジナル
2016-07-13 10:46:46950ブラウズ

php と mysql のパスワードのほとんどは php とは関係ありません。文字化けの問題を解決するには、ページと mysql のエンコードを処理するだけで済みます。文字化けは中国語で発生するだけです。

PHP + MYSQL を使用すると、ランダムな文字の問題が発生しました。 解決策:

UTF8 データベースの文字化けを解消するには、mysql_connect の後に SET NAMES UTF8 を追加します。コードは次のとおりです。

コードは次のとおりですコードをコピー
1 $mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);

2 mysql_query("SET NAMES 'GBK'");

データベースの文字セットはutf-8です

これを接続ステートメントに使用します


コードは次のとおりですコードをコピー1 mysql_query("SET NAMES 'UTF8'");
2 mysql_query("SET CHARACTER SET UTF8");
3 mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

一般的なエラー条件と解決策をいくつか示します:

1. データベースは UTF8 エンコーディングを使用しており、ページ宣言のエンコーディングは GB2312 です。これは文字化けの最も一般的な原因です。このとき、PHP スクリプト内の直接 SELECT データは文字化けします。クエリを実行する前に mysql_query("SET NAMES GBK"); を使用して、ページ宣言のエンコーディングが接続と一致していることを確認する必要があります。ここでエンコーディングを設定します (GBK は GB2312 の拡張子です)。ページが UTF-8 でエンコードされている場合は、mysql_query("SET NAMES UTF8"); を使用できます。 一般的に使用される UTF-8 ではなく、UTF8 であることに注意してください。ページ宣言のエンコーディングがデータベースの内部エンコーディングと一致している場合は、接続エンコーディングを設定する必要はありません。


注: 実際、MYSQL のデータ入出力は、上記で説明したものよりも複雑です。MYSQL 設定ファイル my.ini には 2 つのデフォルトのエンコーディングが定義されています。これらは、[client] と [ のデフォルトの -character-set です。 mysqld]。default-character-set は、クライアント接続とデータベース内部にデフォルトで使用されるエンコーディングを設定します。上記で指定したエンコーディングは、実際には、MYSQL クライアントがサーバーに接続するときのコマンド ライン パラメーターcharacter_set_client であり、デフォルトのエンコーディングを使用する代わりに、受信したクライアント データのエンコーディングを MYSQL サーバーに伝えます。

2. ページ宣言のエンコーディングがファイル自体のエンコーディングと一致しない場合、エンコーディングが一致しない場合、ページの作成時にアーティストがブラウザに表示する内容が文字化けしてしまうため、これはめったに起こりません。多くの場合、リリース後にいくつかの軽微なバグを修正し、間違ったエンコーディングでページを開いて保存することが原因で発生します。または、CuteFTP などの一部の FTP ソフトウェアを使用してオンラインでファイルを直接変更すると、ソフトウェアのエンコード設定が間違っているため、間違ったエンコードが変換されます。

3. バーチャルホストをレンタルしている一部の友人は、上記の 3 つのエンコーディングが正しく設定されているにもかかわらず、依然としてコードが文字化けしています。たとえば、Web ページが GB2312 でエンコードされている場合、ブラウザのエンコードを手動で GB2312 に変更すると、Web ページの HEAD はすでに GB2312 として認識されます。 、ページは正常に表示されます。その理由は、サーバー Apache がサーバーのグローバルなデフォルト エンコーディングを設定し、httpd.conf に AddDefaultCharset UTF-8 を追加するためです。このとき、サーバーは最初に HTTP ヘッダーをブラウザーに送信しますが、その優先順位はページ内で宣言されたエンコーディングよりも高くなります。当然、ブラウザーはそれを誤って認識します。解決策は 2 つあります。管理者は、AddDefaultCharset GB2312 を独自の仮想マシンの構成ファイルに追加してグローバル構成をオーバーライドするか、独自のディレクトリの .htaccess で構成する必要があります。

http://www.bkjia.com/PHPjc/632910.html

tru​​ehttp://www.bkjia.com/PHPjc/632910.html技術記事 php や mysql のパスワードのほとんどは php とは関係ありません。文字化けの問題を解決するには、ページと mysql のエンコードを処理するだけです。文字化けは中国語だけです。 PH を使用してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。