PHPでデータベースにデータを挿入する際に中国語が文字化けする問題を解決する方法

PHPz
リリース: 2023-04-10 11:16:43
オリジナル
638 人が閲覧しました

PHP は、主に Web 開発に使用される人気のオープンソース スクリプト言語です。 PHP を使用して開発を行う場合、特にデータベースに中国語のデータを挿入する場合に、中国語の文字化けの問題が発生することがあります。この記事では、PHP でこの状況を回避する方法を紹介します。

  1. 文字エンコーディングの設定

データベースに接続するときは、データベースの文字セットを PHP スクリプトの文字セットと一致するように設定する必要があります。そうしないと文字化けが発生します。中国語情報を挿入すると文字が表示されます。データベースに接続するときに、次のコードを追加します。

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
ログイン後にコピー
  1. UTF-8 エンコーディングの使用を要求する

UTF-8 は、Unicode をサポートするマルチバイト エンコーディングです。キャラクターセット。 UTF-8 エンコーディングを使用すると、データベースに中国語を含むデータを正しく挿入できます。 PHP ファイルが UTF-8 エンコードされているかどうかは、次のメソッドで確認できます。

$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");
ログイン後にコピー

返された $encoding が "UTF-8" の場合、PHP ファイルは UTF-8 エンコードされています。

  1. PHP 関数を使用して文字列をエスケープする

SQL ステートメントを実行するときは、関数を使用して文字列を SQL セーフな文字列に変換し、データベース内のデータの安全性を確保する必要があります。 。 PHP には、文字列をエスケープする関数 mysqli_real_escape_string() が用意されています。新しいデータを挿入する前に文字列をエスケープするだけです。

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
ログイン後にコピー
  1. PHP データ オブジェクト (PDO) の使用

PDO は、さまざまなデータベースをサポートできる PHP データベース抽象化レイヤーです。 PDO を使用する場合、データベース接続の文字エンコーディングを設定し、PDO::quote() 関数を使用してエスケープできます。

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8";
$username = "username";
$password = "password";
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    $name = $pdo->quote($_POST['name']);
    $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)";
    $pdo->exec($sql);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}
ログイン後にコピー

php insertを使用する際に中国語の文字化けが発生した場合、上記の方法で解決できます。正しい文字エンコード設定、文字列エスケープ、および PDO の使用により、いつでも中国語データをデータベースに正常に挿入できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート