Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apa yang perlu dilakukan jika php json menyimpan aksara Cina yang kacau dalam pangkalan data

Apa yang perlu dilakukan jika php json menyimpan aksara Cina yang kacau dalam pangkalan data

PHPz
PHPzasal
2023-04-19 09:17:54643semak imbas

Semasa proses pembangunan, kami mungkin menghadapi situasi di mana data JSON disimpan dalam pangkalan data. Ini biasanya tidak menimbulkan masalah apabila berurusan dengan rentetan bahasa Inggeris, tetapi apabila kita melibatkan aksara Cina, kita mungkin menghadapi aksara yang bercelaru. Artikel ini akan memperkenalkan cara untuk menyelesaikan masalah kacau JSON yang berlaku apabila menyimpan aksara Cina ke dalam pangkalan data MySQL.

  1. Set aksara pangkalan data

Pertama, kita perlu mengesahkan sama ada set aksara pangkalan data adalah betul. Set aksara lalai MySQL ialah Latin1, yang tidak menyokong set aksara Cina. Jika pengekodan anda bukan UTF-8, anda perlu menukar set aksara MySQL. Dalam baris arahan MySQL, masukkan arahan berikut untuk menukar set aksara:

SET NAMES 'utf8';

Kemudian laksanakan arahan berikut:

ALTER DATABASE `your_database` CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. Isu pengekodan

Satu lagi masalah biasa ialah isu pengekodan. Editor teks anda mungkin menggunakan pengekodan yang berbeza daripada pelayan, atau mungkin menggunakan pengekodan yang berbeza daripada pangkalan data MySQL. Untuk mengelakkan aksara bercelaru, pastikan semua fail menggunakan pengekodan yang sama. Untuk fail php, kami mengesyorkan menggunakan pengekodan UTF-8.

  1. Simpan data JSON ke dalam pangkalan data

Semasa proses pembangunan, cara terbaik untuk menyimpan data JSON ialah menukar data menjadi rentetan JSON melalui fungsi json_encode PHP, dan kemudian masukkannya ke dalam jadual pangkalan data. Untuk aksara Cina, format pengekodan UTF-8 diperlukan.

Berikut ialah contoh kod untuk menyimpan data JSON ke dalam pangkalan data MySQL:

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//将 JSON 数据转换为字符串
$json_data = json_encode($data, JSON_UNESCAPED_UNICODE);

//插入数据到数据库表中
$sql = "INSERT INTO `table` (`id`, `data`) VALUES (NULL, '$json_data')";
$result = mysqli_query($conn, $sql);

//关闭数据库连接
mysqli_close($conn);
  1. Membaca data JSON

Apabila anda mahu membaca storan Apabila bekerja dengan data JSON dalam pangkalan data, anda boleh menggunakan fungsi json_decode PHP untuk menukar rentetan JSON kepada tatasusunan atau objek PHP. Ambil perhatian bahawa apabila menggunakan json_decode, parameter kedua perlu ditetapkan kepada benar untuk memastikan data dikembalikan sebagai tatasusunan dan bukannya objek.

Berikut ialah contoh kod untuk membaca data JSON daripada pangkalan data MySQL:

//连接数据库
$conn = mysqli_connect($servername, $username, $password, $dbname);

//设置字符集
mysqli_set_charset($conn, "utf8");

//查询数据库
$sql = "SELECT `data` FROM `table` WHERE id = '1'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

//将 JSON 字符串转换为 PHP 数组
$json_data = json_decode($row['data'], true);

//关闭数据库连接
mysqli_close($conn);

Ringkasan:

Apabila menyimpan data JSON, pastikan set aksara pangkalan data adalah UTF- 8. Penyunting teks menggunakan format pengekodan yang betul dan menggunakan fungsi json_encode PHP untuk menukar data menjadi rentetan JSON. Apabila membaca data JSON, gunakan fungsi json_decode PHP untuk menukar rentetan JSON kepada tatasusunan PHP.

Di atas ialah beberapa petua untuk menyelesaikan masalah bercelaru JSON yang berlaku apabila menyimpan aksara Cina ke dalam pangkalan data MySQL Kami berharap petua ini akan membantu anda.

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika php json menyimpan aksara Cina yang kacau dalam pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn