Rumah >pembangunan bahagian belakang >masalah PHP >Apa yang perlu dilakukan jika pangkalan data simpan php Cina bercelaru

Apa yang perlu dilakukan jika pangkalan data simpan php Cina bercelaru

PHPz
PHPzasal
2023-04-10 09:35:46598semak imbas

Dalam PHP, jika anda menggunakan aksara Cina untuk menyimpan ke pangkalan data, aksara bercelaru mungkin muncul. Ini kerana pangkalan data dan pengekodan halaman web tidak konsisten, menyebabkan data disimpan dengan tidak betul. Berikut adalah beberapa penyelesaian.

  1. Tetapan pengekodan pangkalan data

Sahkan dahulu sama ada pengekodan pangkalan data ialah UTF-8 (atau pengekodan lain yang menyokong bahasa Cina). Jika tidak, anda boleh menetapkan pengekodan dalam pangkalan data kepada UTF-8.

Jika anda menggunakan pangkalan data MySQL, anda perlu menentukan pengekodan semasa membuat pangkalan data dan jadual data:

CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE tablename (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
    age INT(3)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. Tetapan pengekodan PHP

Kedua, tetapkan pengekodan kepada UTF-8 dalam skrip PHP:

header('Content-Type: text/html; charset=utf-8');

Anda juga boleh menetapkannya dalam fail konfigurasi PHP php.ini:

default_charset = "utf-8"
  1. Tetapan sambungan pangkalan data

Apabila menyambung ke pangkalan data, anda juga perlu menetapkan pengekodan kepada UTF-8. Jika anda menggunakan PDO untuk menyambung ke pangkalan data, anda boleh menulis seperti ini:

$dsn = "mysql:host=localhost;dbname=dbname;charset=utf8mb4";
$dbh = new PDO($dsn, $user, $password);

Jika anda menggunakan MySQLi untuk menyambung ke pangkalan data, anda boleh menulis seperti ini:

$mysqli = new mysqli("localhost", "user", "password", "dbname");
mysqli_set_charset($mysqli, "utf8mb4");
  1. Penukaran pengekodan data

Jika tiada kaedah di atas menyelesaikan masalah, mungkin pengekodan rentetan yang disimpan ke pangkalan data tidak konsisten dengan pengekodan pangkalan data dan penukaran pengekodan diperlukan. Penukaran boleh dilakukan menggunakan fungsi iconv PHP atau fungsi mb_convert_encoding.

$str = "你好";
$str = iconv('gbk', 'utf-8', $str);
//或
$str = mb_convert_encoding($str, 'utf-8', 'gbk');

Ringkasan

Apabila menyimpan aksara Cina ke pangkalan data dalam PHP, pastikan pengekodan pangkalan data dan halaman web adalah konsisten, dan tetapkan pengekodan kepada UTF-8 dalam pangkalan data sambungan dan skrip PHP. Jika aksara bercelaru muncul, cuba penukaran pengekodan. Harap kaedah ini dapat membantu anda menyelesaikan masalah tersebut.

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika pangkalan data simpan php Cina bercelaru. 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