PHP は、主に Web 開発に使用される人気のオープンソース スクリプト言語です。 PHP を使用して開発を行う場合、特にデータベースに中国語のデータを挿入する場合に、中国語の文字化けの問題が発生することがあります。この記事では、PHP でこの状況を回避する方法を紹介します。
データベースに接続するときは、データベースの文字セットを PHP スクリプトの文字セットと一致するように設定する必要があります。そうしないと文字化けが発生します。中国語情報を挿入すると文字が表示されます。データベースに接続するときに、次のコードを追加します。
$con=mysqli_connect("localhost","my_user","my_password","my_db"); mysqli_query($con,"SET NAMES utf8");
UTF-8 は、Unicode をサポートするマルチバイト エンコーディングです。キャラクターセット。 UTF-8 エンコーディングを使用すると、データベースに中国語を含むデータを正しく挿入できます。 PHP ファイルが UTF-8 エンコードされているかどうかは、次のメソッドで確認できます。
$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");
返された $encoding が "UTF-8" の場合、PHP ファイルは UTF-8 エンコードされています。
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);
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 サイトの他の関連記事を参照してください。