ホームページ  >  記事  >  バックエンド開発  >  PHP+MYSQL 中国語文字化け問題、_PHP チュートリアル

PHP+MYSQL 中国語文字化け問題、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:47:53811ブラウズ

PHP+MYSQL 中国語コード文字化け問題、

MySQL 4.1 から多言語サポートが導入されましたが、PHP を使用して挿入された中国語文字は、どのエンコーディングを使用しても文字化けして表示されます。

この問題を解決するのは実際には非常に簡単です。

1. テーブルを作成するときに、エンコードタイプを gb2312_chinese_ci に設定します。

2. たとえば、PHP ページのデータベース接続ステートメントに行 mysql_query("SET NAMES 'gb2312'",$link); を追加します。 リーリー

この行を書き込みページと読み込みページの両方に追加すると、MYSQL の漢字が正常に表示されるようになります。

関連情報:

MySQL 4.1 から多言語サポートが導入され、いくつかの機能は他のデータベース システムを上回っています。

MySQL4.1 の文字セットサポート (Character Set Support) には、文字セット (Characterset) とソート方法 (Collat​​ion) の 2 つの側面があります。文字セットのサポートは、サーバー、データベース、テーブル、接続の 4 つのレベルに細分化されています。

システムの文字セットと並べ替え設定を表示するには、次の 2 つのコマンドを使用できます: !


リーリー
上記の値はシステムのデフォルト値です。 (なぜシステムがデフォルトで latin1 スウェーデン語の並べ替え方法を使用するのか不思議です)...
元の方法で PHP を介して MySQL データベースにアクセスすると、テーブルのデフォルトの文字セットを utf8 に設定し、UTF-8 エンコードでクエリを送信したとしても、データベースに格納されているデータは依然として文字化けしていることがわかります。問題はこの接続層にあります。解決策は、クエリを送信する前に次の文を実行することです:

名前「utf8」を設定します;

これは、次の 4 つの命令と同等です:


コードをコピーします

コードは次のとおりです: setcharacter_set_client = utf8; setcharacter_set_results = utf8; setcharacter_set_connection = utf8;
set Collat​​ion_connection = utf8_general_ci


デフォルトのWebページによって送信されたクエリはgb2312(フォームページのメタで確認できます)であり、mysqlはデフォルトでそれをutf8として扱うため(この時点でcharacter_set_client=utf8を確認できます)、文字化けしているはずです。同様に、mysql によって返される結果は、character_set_results エンコーディングに変換されます (テーブルのエンコーディングとは関係ありません)。デフォルトは utf8 で、Web ページはそれを gb2312 として扱うため、次のようなフィールドが必要です。データベースから読み取られたタイトルは文字化けしますが、他の PHP 部分のテキストは文字化けしません。

解決策 (Yijian Piaoxue による):

mysql5.0をインストールするときは、utf8文字セットを選択する必要があります(phpmyadminでデータベースやフィールドを作成するときはutf8文字セットを選択する必要はありません)、phpが接続を確立した後に送信します


コードをコピーします

コードは次のとおりです: $link = mysql_connect('localhost', 'root', 'root'); mysql_query("SET NAMES 'utf8'",$link);

現時点では、Web ページに表示される内容はまだ文字化けしていますが、Web ページのソース ファイルを確認すると、もう ???? ではありません。 php ソース ファイルをメモ帳で開き、utf8 エンコードとして保存せず、Web ページを更新すればすべて完了です。
または、もちろん、インストール時に utf8 をインストールし、php でセット名「gb2312」を送信し、php ファイルをメモ帳のデフォルトの ansi として保存する必要があります。これにより中国語も正しく表示されます。

しかし、接続するたびにSET NAMES 'utf8'を送信することはできません。それを完全に解決する方法は見つかりませんでした。

この方法で mysql をインストールすると、デフォルトの文字セットが utf8 として選択され、command.exe で mysql コンソールに入ると、クエリの結果が文字化けしてしまいます

コードをコピーします

コードは次のとおりです: mysql>名前を「gbk」に設定します;
または

コードをコピーします

コードは次のとおりです: mysql>名前を設定 'gb2312';
これは、mysql クライアントに gb2312 文字セットを使用するように指示することと同等であり、結果は gb2312 が GBK のサブセットになります。

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

www.bkjia.com本当http://www.bkjia.com/PHPjc/1024928.html技術記事 PHP+MYSQL 中国語のコードが文字化けする問題、MySQL 4.1 から多言語サポートが導入されましたが、どのエンコーディングを使用しても、PHP で挿入された中国語は文字化けして表示されます。この問題の解決策は実際には非常に簡単です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。