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
Lepaskan: 2023-04-10 10:25:46
asal
579 orang telah melayarinya

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;
Salin selepas log masuk
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;
Salin selepas log masuk
  1. Tetapan pengekodan PHP

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

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

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

default_charset = "utf-8"
Salin selepas log masuk
  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);
Salin selepas log masuk

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");
Salin selepas log masuk
  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');
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan