今日のインターネット時代では、ほとんどの Web サイトは PHP 言語に基づいて開発されていると思います。ただし、PHP はバージョン 5.0 以降、デフォルトで UTF-8 エンコーディングを使用します。UTF-8 エンコーディングに慣れていない開発者にとっては、特にデータベース クエリを処理するときにエンコーディングの問題が発生する可能性があります。この記事では、UTF-8 でエンコードされたデータを正しくクエリする方法を説明します。
まず、UTF-8 エンコーディングとは何かを理解しましょう。
UTF-8 エンコードとは何ですか?
UTF-8 は可変長文字エンコーディングであり、Unicode の実装の 1 つです。各 Unicode 文字を 1 ~ 4 バイトのシーケンスにエンコードし、アルファベットの文字のみで構成される文字の 1 バイト エンコードに ASCII コードを使用します。 UTF-8 は汎用性と互換性に優れているため、インターネット上で広く使用されています。
UTF-8 でエンコードされたデータをクエリするにはどうすればよいですか?
PHP での最も一般的なデータベース操作は、データのクエリです。ただし、データが UTF-8 でエンコードされている場合は、クエリを実行するときに次の点に注意する必要があります。
データベースに接続するときは、パラメータ charset=UTF-8 を指定してデータベース接続の文字セットを設定する必要があります。例:
$link = mysqli_connect("localhost", "my_user", "my_password", "my_database"); mysqli_set_charset($link, "utf8");
クエリを作成する場合、SQL ステートメントで文字セットを指定する必要があります。例:
$sql = "SELECT * FROM table_name WHERE name=?"; $stmt = mysqli_prepare($link, $sql); mysqli_stmt_bind_param($stmt, "s", $name); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $result); mysqli_stmt_fetch($stmt); mysqli_stmt_close($stmt);
上の例では、mysqli_prepare() 関数を使用して SQL ステートメントを準備し、SQL ステートメント内で疑問符? を使用してバインドする必要があるパラメーターを表します。次に、mysqli_stmt_bind_param() 関数を使用してパラメータをバインドします。関数の最初のパラメータはデータ型です。ここでは、文字列型を表すために「s」を使用します。最後に、SQL ステートメントは mysqli_stmt_execute() 関数を使用して実行され、結果セットは mysqli_stmt_bind_result() 関数を使用してバインドされ、クエリ結果は mysqli_stmt_fetch() 関数を使用して取得されます。
クエリを実行するときは、取得したデータが UTF-8 データでエンコードされていることを確認する必要があります。 。 PHP の mb_detect_encoding() 関数を使用すると、文字列のエンコード形式を検出できます。例:
$str = "需要检测的字符串"; if(mb_detect_encoding($str, "UTF-8", true) === false){ $str = iconv("GB2312", "UTF-8", $str); }
上の例では、最初に mb_detect_encoding() 関数を使用して文字列 $str のエンコード形式を検出しました。結果が false の場合は、UTF-8 ではないことを意味します。 iconv() 関数を使用して、UTF-8 でエンコードされた文字列に変換する必要があります。
概要
上記の手順により、UTF-8 でエンコードされたデータを正しくクエリできます。もちろん、上記は UTF-8 でエンコードされたデータをクエリする方法の簡単な紹介にすぎませんが、実際のプロジェクトでは、処理する必要があるさらに複雑な状況が存在する可能性があります。ただし、基本的な方法とテクニックをマスターしていれば、中国語のエンコードの問題に対処するのにもう問題はありません。
以上がPHPはデータベース内のUTF-8でエンコードされたデータをクエリしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。