phpがmysqlデータベースを読み込む際の文字化けの解決方法について
phpがmysqlを読み込む際に、以下の箇所で文字セットが関係します。
1. データベーステーブル作成時にデータベーステーブルの文字セットを指定します。例:
- create table tablename
- (
- id int not null auto_increment,
- title varchar(20) not null,
- primary key ('id')
- )DEFAULT CHARSET =UTF8;
コードをコピー2. mysql の文字セット mysql には、character_set_client、character_set_results、character_set_connection の 3 つの重要な変数があります。 character_set_client を設定することで、PHP がデータベースに保存するエンコード方式を Mysql に伝えます。 character_set_results を設定することで、PHP がどのような種類のエンコードされたデータを取得する必要があるかを Mysql に伝えます。 character_set_connection を設定することで、PHP クエリ内のテキストに使用するエンコーディングを Mysql に指示します。 3. データベースに接続したら、データベース間で文字を送信するときに使用されるデフォルトの文字エンコーディングを設定します。 mysqli::set_charset() または mysqli::query('set names utf8') を使用して設定します。
「SET NAMES」の代わりに mysqli::set_charset(mysqli:set_charset) を使用してみてください
$db = new mysqli('localhost','user','passwd','database_name');- $ db ->set_charset('utf8');
コードをコピーします
utf-8ではなくutf8であることに注意してください
(ここでの問題は、データベースとPHPがエンコーディングを統一していることです。しかし、そうでない場合、mysqli::set_charset() 関数を呼び出すと、データを読み取るときに文字化けが表示されます。なぜですか? ;
SETcharacter_set_results = utf8;
SETcharacter_set_connection = utf8;
)
4. HTML ページで使用される文字セット。
をmetaタグに設定コードをコピー
- 5. phpテキストファイルで使用される文字セット。
Linux でファイルを開くには vim を使用できます。
:set encoding
と入力して、ファイルで使用されている文字セットを表示できます
コード化けがないことを確認するには、ファイル自体のエンコーディング、HTML、PHPで指定したエンコーディング、Mysqlのエンコーディング(character_set_client、character_set_results含む)を統一するように指示します。 mysqli:set_charset() 関数または「SET NAMES」も使用します。
「3」以降の質問に答えて、データベースリンク後の文字セットを設定した場合と設定しなかった場合の結果をテストするためにいくつかの例を書きました。テスト環境はUbuntu 12.04、MySQL 5.5、php 5.5.7。
結果は以下の通りです:
(1) データベーステーブルの文字セットはutf8です。セット名を使用しないとutf8
は正常に中国語を挿入して読み込むことができますが、mysqlでは文字化けが表示されます
(2) ) データベーステーブルの文字セットは utf8 です。中国語を正常に挿入および読み取るにはセット名 utf8 を使用します
(3) データベーステーブルの文字セットは utf8 ではありません。
mysql で表示して読み取るには疑問符です。
Zero Zero H5から選択されたPHPチュートリアル
上記は、PHP で MySQL データベースを読み込むときにコードが文字化けする場合の解決策を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人の役に立てば幸いです。