ホームページ  >  記事  >  データベース  >  phpからmysqlへの接続で文字化けが発生する問題を解決する方法

phpからmysqlへの接続で文字化けが発生する問題を解決する方法

WBOY
WBOY転載
2023-05-29 14:07:361166ブラウズ

1. 文字化けの原因
PHP を使用して MySQL に接続する場合、MySQL の文字セットと PHP の文字セットが一致していない場合、文字化けが発生します。現れる。具体的な理由は次のとおりです。

  1. MySQL の文字セットは PHP の文字セットと一致しません
    MySQL のデフォルトの文字セットは UTF-8 ですが、PHP のデフォルトの文字セットは ISO-8859- 1. PHP コードで文字セットを指定しない場合、PHP は ISO-8859-1 文字セットを使用します。このとき、MySQLからクエリしたデータにUTF-8の文字が含まれていると文字化けが発生します。

  2. MySQL データ テーブルの文字セットは、MySQL サーバーの文字セットと一致しません。
    MySQL では、各データ テーブルにデフォルトの文字セットがあります。データテーブルの文字セットとMySQLサーバーの文字セットが一致していない場合、文字化けが発生する場合があります。

  3. PHP が MySQL に接続する方法が間違っています
    MySQL に接続する場合、PHP には mysql_connect、mysqli_connect、PDO などのさまざまな接続方法があります。接続方法が異なれば使用するエンコード方法も異なるため、選択を誤るとコードが文字化けする問題が発生します。

2. コード化けの問題を解決する
上記の理由により、コード化けの問題を解決するには、次のような対策を講じることができます。

  1. PHP の文字セットを指定する
    PHP コードでは、文字セットを指定することで文字化けの問題を解決します。次のコードを使用できます。

header('Content-Type:text/html;charset=utf-8');
  1. MySQL デフォルトの文字セットを変更する
    MySQL 構成ファイル my.MySQL のデフォルトの文字セットを変更できます。 cnf。ファイルを開き、[mysqld] セクションを見つけて、次のコードを追加します。

character-set-server=utf8
  1. MySQL データ テーブルの文字セットを変更できます。次のステートメントを使用してデータ テーブルを変更します。 文字セット:

  2. ALTER TABLE {table_name} CONVERT TO CHARACTER SET utf8;
  1. PHP が MySQL に接続する方法を変更します。

    PDO を使用して MySQL に接続し、指定することができます。接続時の文字セットは次のようになります:

  2. $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'password');
mysqli を使用して MySQL に接続する場合は、次のコードを通じて文字セットを指定できます:

$mysqli = mysqli_connect('localhost', 'root', 'password', 'test');
mysqli_set_charset($mysqli, 'utf8');

  1. PHP ファイルを UTF-8 エンコード形式で保存する

    PHP ファイルに中国語の文字が含まれている場合は、ファイルを保存するときに UTF-8 エンコード形式で保存する必要があります。そうしないと文字化けが発生します。

以上がphpからmysqlへの接続で文字化けが発生する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。