ホームページ > バックエンド開発 > PHPチュートリアル > MySQL+PHP 文字化けの原理と解決策_PHP チュートリアル

MySQL+PHP 文字化けの原理と解決策_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:25:40
オリジナル
966 人が閲覧しました

MySQL+PHP で文字化けが発生する理由:

◆ MySQL データベースのデフォルトのエンコーディングが PHP Web ページと一致しない場合、MySQL でテーブルを作成するときに文字化けが発生する可能性があります。 MySQL では、エンコーディングの種類を選択できます。このエンコーディングが Web ページのエンコーディングと一致しない場合、MySQL のコードが文字化けする可能性があります。

◆ MySQL でテーブルを作成するときに、エンコーディングを選択できます。このエンコーディングが Web ページのエンコーディングと一致しない場合、MySQL が文字化けする可能性もあります

◆ ユーザーが送信したページのエンコーディングがデータを表示するページのエンコーディングと一致しない場合、間違いなく次のような問題が発生します。 PHP ページが文字化けする

◆ ユーザーがデータを入力するページが big5 コードであるが、ユーザー入力が表示されるページが gb2312 である場合、これにより 100% PHP ページが文字化けします

◆ PHP ページの文字セットが正しくありません。

◆ PHP 接続の MySQL データベース ステートメントで指定されたエンコーディングが正しくありません。

注:

MySQL のバージョンが一貫していないことが文字化けを引き起こすのではないかと疑っている人は多いですが、このガイドを読めばそうは思わなくなると思います。

通常、一部の Web サイトで表示されるテキストには、複数のエンコーディングが使用されている場合があります。たとえば、繁体字中国語の文字は、big5 エンコーディング、utf-8 エンコーディング、または gb エンコーディングである可能性があります。つまり、簡体字中国語でエンコードされた繁体字中国語の文字もあれば、繁体字中国語でエンコードされた簡体字中国語の文字もあるということを理解する必要があります。

簡素化されたエンコードを使用して Web ページを作成している場合、エンコードは GB2312 に設定されています。香港および台湾からの訪問者が繁体字中国語の情報を送信すると、コードが文字化けする可能性があります。解決策:

Web サイトのエンコードを utf-8 に設定します。これは世界中のすべてのキャラクターと互換性があります。

ウェブサイトが長期間運営されており、古いデータが多く、簡体字中国語の設定を変更できない場合は、ページのエンコードを GBK に設定することをお勧めします。 GBK と GB2312 の違いは次のとおりです。 GBK は GB2312 文字よりも多くの文字を表示できます。簡略化されたコードで繁体字を表示したい場合は、GBK を使用するしかありません。

MySQL+PHP で文字化けが発生する理由が明確に理解できたので、解決策は難しくありません。

MySQL+PHP によって生成される文字化けコードの解決策:

MySQL をインストールするためのコードを変更できない場合、多くの友人は Web サイトを構築するために仮想ホストを購入しており、MySQL のインストール コードを変更する権利を持っていません。この手順は、後でインストールする限り、手順が正しければ文字化けの問題を解決できる可能性があるためです。

データベースのエンコードを変更します。データベースのエンコードが間違っている場合は、PHPmyadmin で次のコマンドを実行できます:

ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
ログイン後にコピー
上記のコマンドは、テスト データベースのエンコードを utf8 に設定します。

テーブルのエンコーディングを変更します:

ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
ログイン後にコピー
上記のコマンドは、テーブル カテゴリのエンコーディングを utf8 に変更することです。

フィールド エンコーディングを変更します:

ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER <br>SET utf8 COLLATE utf8_bin NOT NULL
ログイン後にコピー
上記のコマンドは、テスト テーブルの dd のフィールド エンコーディングを utf8 に変更します。

この状況が簡単に解決できる場合は、ページを確認してソース ファイルの文字セットを変更するだけです。

この場合は、ページの文字セットを変更するだけです。

データベースに接続するステートメント内。

mysql_connect('localhost','user','password'); <br>mysql_select_db('my_db'); <br>mysql_query("set names utf8;");     //select 数据库之后加多这一句
ログイン後にコピー
PHPページでの文字化けの発生を避けるため、PHPページの最初の文

header("content-type:text/html; charset=utf-8"); <br>//强行指定页面的编码,以避免乱码
ログイン後にコピー
注: 後上記のメソッドは変更されますが、新しく挿入されたデータが文字化けしないことのみを保証できます。たとえば、ユーザーが送信したデータが BIG5 であるが、GB2312 で正しく表示されるように上記のメソッドを使用したい場合です。 Web ページでは、このようなテキストの内部コード変換は不可能です。別のプログラムを作成することによってのみ解決できます。


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

本当http://www.bkjia.com/PHPjc/446662.html技術記事 MySQL+PHP でコードが文字化けする理由: ◆ MySQL データベースのデフォルトのエンコードは utf8 です。このエンコードが PHP Web ページと一致しない場合、MySQL でテーブルを作成するときにコードが文字化けする可能性があります。 .
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート