ホームページ >バックエンド開発 >PHPの問題 >PHP挿入で追加された中国語データの文字化けを解決する方法

PHP挿入で追加された中国語データの文字化けを解決する方法

PHPz
PHPzオリジナル
2023-04-04 14:29:10860ブラウズ

PHP をデータベース開発に使用する場合、多くの場合、SQL ステートメントを使用してデータを挿入する必要があります。しかし、データベースに中国語のデータを挿入すると文字化けが発生することがありますので、この記事ではその解決方法を紹介します。

  1. データベースのエンコードを確認する

まず、データベースのエンコードを確認する必要があります。 MySQL では、次の SQL ステートメントを通じてデータベースのエンコード方式を確認できます。

SHOW VARIABLES LIKE 'character_set_database';

出力結果が utf8 または utf8mb4 の場合、データベースのデフォルトのエンコード方式は UTF-8 です。出力結果が他のエンコーディングである場合は、INSERT ステートメントを使用するときに対応する文字セットを指定する必要があります。

  1. PHP エンコード方法の設定

PHP では、次のステートメントを使用してエンコード方法を設定できます:

mysqli_set_charset($mysqli, 'utf8');

その中で、$mysqli はデータベースの mysqli オブジェクトへの接続。エンコード方式を UTF-8 に設定すると、データベースに中国語データを挿入するときに文字化けが発生しなくなります。

  1. SQL ステートメントで文字セットを指定する

上記 2 つの方法で文字化けが解決できない場合は、INSERT ステートメントで文字セットを指定する必要があります。例:

INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)

SQL ステートメントでは、N'' を使用して中国語の文字列を Unicode エンコードに変換し、中国語の文字列が文字化けしないようにします。

  1. 準備されたステートメントを使用する

最後に、SQL インジェクション攻撃を回避し、コードの再利用性を向上させるために、準備されたステートメントを使用することをお勧めします。プリペアド ステートメントは、mysqli または PDO オブジェクトを通じて作成でき、パラメータを設定するときにエンコード方法を指定できます。例:

$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)");
$stmt->bind_param("ss", $val1, $val2, ...);
$stmt->execute();

この例では、bind_param メソッドを使用してパラメータを設定するときに、文字セットを 'ss に設定します。 ' は、パラメータが文字列型であり、文字セットが UTF-8 であることを意味します。

概要

この記事では、PHP INSERT SQL に中国語の文字化けが追加される問題を解決するためのいくつかの方法を紹介します。これには、データベース エンコードの確認、PHP エンコード方法の設定、文字セットの指定が含まれます。 SQL ステートメントと前処理ステートメントの使用。開発プロセスでは、コードの可読性と保守性を確保するために、実際の状況に応じて適切な方法を選択し、コーディング標準に従う必要があります。

以上がPHP挿入で追加された中国語データの文字化けを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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