ホームページ  >  記事  >  バックエンド開発  >  PHP が MySQL で漢字を読み取れない理由

PHP が MySQL で漢字を読み取れない理由

PHPz
PHPzオリジナル
2023-04-12 16:04:41833ブラウズ

プログラムの開発でも Web サイトの開発でも、PHP と MySQL は一緒に使用されることがよくあります。ただし、MySQL データベースに中国語の文字が含まれている場合、いくつかの問題が発生する可能性があります。具体的には、PHP は MySQL 内の漢字を読み取ることができません。これは、PHP と MySQL の間でよくある問題です。

PHP が MySQL の漢字を読み取れないのはなぜですか?

この問題を理解するには、エンコーディングと文字セットについて深く理解する必要があります。エンコーディングは、文字をコンピューターが理解して保存できる数値に変換するプロセスです。文字セットは、文字エンコーディングを定義する一連の規則です。中国語の文字セットは、漢字を表すために 2 バイト以上を必要とするマルチバイト文字セットです。

PHP と MySQL は 2 つの異なるシステムであるため、異なる文字エンコーディングと文字セットを使用する場合があります。 2 つが異なるエンコーディングを使用すると、MySQL で中国語の文字を読み取れなくなる可能性があります。 MySQL はデフォルトで Latin-1 文字セットを使用し、ほとんどの中国語文字は Latin-1 文字セットでは表現できないため、デフォルトでは PHP は MySQL で中国語文字を読み取ることができません。

この問題を解決するにはどうすればよいですか?

まずは、MySQL の文字セット設定と PHP の文字セット設定を確認すると解決策が見つかります。

  1. MySQL データベースの文字セットを変更する

MySQL で中国語の文字をサポートするには、その文字セットを utf8mb4 文字セットに変更します。これは、次のコマンドで実行できます:

ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

このコマンドは、utf8mb4 文字セットと utf8mb4_unicode_ci 照合順序を使用するようにデータベースを変更します。 。このようにして、MySQL は中国語の文字を正しく保存、表示、および読み取ることができます。

  1. PHP の文字セットを変更する

デフォルトでは、PHP は Latin-1 文字セットを使用します。したがって、PHP で中国語の文字を正しく処理できるようにするには、次のコードを PHP ファイルに追加して文字セットを変更する必要があります。たとえば、

header('Content-Type: text/html ; charset=utf- 8');

このコードは、PHP が中国語の文字を正しく読み取って処理できるように、文字セットを utf-8 に設定します。

  1. MySQL への接続時に文字セットを設定する

もう 1 つの方法は、MySQL への接続時に文字セットを utf8mb4 に設定することです。これを実現するには、次のコードを使用します。

$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

if (!$mysqli->set_charset("utf8mb4")) {
    printf("Error loading character set utf8mb4: %s\n", $mysqli->error);
    exit();
}

このメソッドを使用すると、MySQL データベースに接続するときに文字セットを utf8mb4 に設定して、PHP が中国語の文字を正しく読み取って処理できるようにすることができます。

概要

PHP と MySQL を使用する場合、中国語の文字を正しく処理することが非常に重要です。この 2 つは異なる文字エンコーディングと文字セットを使用する可能性があるため、MySQL での中国語の文字の読み取りが失敗する可能性があります。 MySQL データベースの文字セットを変更するか、PHP の文字セットを変更するか、MySQL に接続するときに文字セットを設定することによって、この問題を解決し、PHP が中国語の文字を正しく読み取って処理できるようにすることができます。

以上がPHP が MySQL で漢字を読み取れない理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。