PHP ialah bahasa skrip sumber terbuka popular yang digunakan terutamanya untuk pembangunan web. Apabila kami menggunakan PHP untuk pembangunan, kami mungkin menghadapi masalah aksara Cina yang kacau, terutamanya apabila memasukkan data Cina ke dalam pangkalan data. Artikel ini akan memperkenalkan cara untuk mengelakkan situasi ini dalam PHP.
Apabila kita menyambung ke pangkalan data, kita perlu menetapkan set aksara pangkalan data agar konsisten dengan set aksara skrip PHP, jika tidak, bercelaru aksara akan muncul apabila memasukkan maklumat bahasa Cina. Kami menambah kod berikut apabila menyambung ke pangkalan data:
$con=mysqli_connect("localhost","my_user","my_password","my_db"); mysqli_query($con,"SET NAMES utf8");
UTF-8 ialah pengekodan berbilang bait yang menyokong Set aksara Unicode. Menggunakan pengekodan UTF-8 boleh memastikan bahawa data yang mengandungi bahasa Cina dalam pangkalan data boleh dimasukkan dengan betul. Kami boleh menyemak sama ada fail PHP dikodkan UTF-8 melalui kaedah berikut:
$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");
Jika pengekodan $yang dikembalikan ialah "UTF-8", fail PHP dikodkan UTF-8.
Apabila melaksanakan pernyataan SQL, kita perlu menggunakan fungsi untuk menukar rentetan kepada rentetan selamat SQL untuk memastikan data dalam pangkalan data Keselamatan . PHP menyediakan fungsi untuk melepaskan rentetan - mysqli_real_escape_string(). Kita hanya boleh melepaskan rentetan sebelum memasukkan data baharu.
$name=mysqli_real_escape_string($con,$_POST['name']); $sql="INSERT INTO TABLE_NAME(name) VALUES('$name')"; mysqli_query($con,$sql);
PDO ialah lapisan abstraksi pangkalan data PHP yang boleh menyokong pelbagai pangkalan data. Apabila menggunakan PDO, kita boleh menetapkan pengekodan aksara untuk sambungan pangkalan data dan menggunakan fungsi PDO::quote() untuk melarikan diri.
$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(); }
Apabila menggunakan sisipan php, jika anda menemui aksara Cina yang kacau, kami boleh menyelesaikannya melalui kaedah di atas. Tetapan pengekodan aksara yang betul, pelarian rentetan dan penggunaan PDO boleh memastikan bahawa kami boleh berjaya memasukkan data Cina ke dalam pangkalan data pada bila-bila masa.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila memasukkan data ke dalam pangkalan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!