Rumah > Artikel > pembangunan bahagian belakang > Apa yang perlu dilakukan jika php membaca aksara Cina yang kacau daripada pangkalan data
Penyelesaian kepada aksara Cina bercelaru Cina yang dibaca oleh PHP: 1. Gunakan fungsi "mysql_query" untuk menetapkan pengekodan sambungan MYSQL dan memastikan pengekodan pengisytiharan halaman adalah konsisten dengan pengekodan sambungan yang ditetapkan di sini; perisian untuk mengubah suai secara terus fail dalam talian 3. Tambahkan "AddDefaultCharset GB2312" pada mesin maya fail konfigurasi untuk mengatasi konfigurasi global, atau konfigurasikannya dalam .htaccess direktori.
Persekitaran pengendalian tutorial ini: sistem Windows 10, PHP versi 8.1.3, komputer Dell g3. | tetapan pengekodan (charset) yang tidak betul pada asalnya dikodkan dalam GB2312, tetapi dibuka dalam pengekodan UTF-8 Simpan semula. Untuk menyelesaikan masalah kod bercelaru di atas, anda perlu terlebih dahulu mengetahui aspek pembangunan yang melibatkan pengekodan:
1. Pengekodan fail: merujuk kepada pengekodan di mana fail halaman (.html, .php, dll.) sendiri diselamatkan. Notepad dan Dreamweaver akan mengenali pengekodan fail secara automatik apabila membuka halaman, jadi masalah akan berkurangan. Walau bagaimanapun, ZendStudio tidak mengenali pengekodan secara automatik Ia hanya akan membuka fail dalam pengekodan tertentu mengikut konfigurasi pilihan Jika anda secara tidak sengaja membuka fail dengan pengekodan yang salah semasa bekerja, dan menyimpannya selepas membuat pengubahsuaian, kacau-bilau watak akan muncul. 2. Pengekodan pengisytiharan halaman: Dalam kod HTML HEAD, anda boleh menggunakan "meta http-equiv="Content-Type" content="text/html charset="XXX" /" (ayat ini mesti Ditulis di hadapan "TItle" Dua pengekodan
3. Pengekodan sambungan pangkalan data: merujuk kepada pengekodan yang digunakan untuk menghantar data ke pangkalan data semasa menjalankan operasi pangkalan data keliru dengan pengekodan pangkalan data itu sendiri Sebagai contoh, lalai dalaman MySQL ialah pengekodan laTIn1, iaitu, Mysql menyimpan data dalam pengekodan laTIn1, dan data yang dihantar ke Mysql dalam pengekodan lain akan ditukar kepada pengekodan latin1 >
Mengetahui di mana pengekodan terlibat dalam pembangunan WEB, anda akan tahu Punca aksara bercelaru: tiga tetapan pengekodan di atas adalah tidak konsisten Memandangkan kebanyakan pengekodan yang pelbagai adalah serasi dengan ASCII, simbol bahasa Inggeris tidak akan muncul kurang bernasib baik. . Ini adalah punca paling biasa data bercelaru Pada masa ini, data diPILIH secara langsung dalam skrip PHP Anda perlu menggunakan:mysql_query(”SET NAMES GBK“); 或mysql_query(”SET NAMES GB2312“);sebelum membuat pertanyaan untuk menetapkan pengekodan sambungan MYSQL. untuk memastikan pengekodan pengisytiharan halaman adalah konsisten dengan pengekodan sambungan yang ditetapkan di sini (GBK ialah lanjutan daripada GB2312) jika halaman tersebut ialah UTF-8 Untuk pengekodan, anda boleh menggunakan:
mysql_query(”SET NAMES UTF8“);Ambil perhatian bahawa ia adalah UTF8. bukannya UTF-8 yang biasa digunakan Jika pengekodan yang diisytiharkan oleh halaman adalah konsisten dengan pengekodan dalaman pangkalan data, anda tidak perlu menetapkan pengekodan sambungan Sebenarnya, input dan output data MYSQL adalah lebih rumit daripada apa yang dinyatakan di atas. Terdapat dua pengekodan lalai yang ditakrifkan dalam fail konfigurasi MYSQL my.ini, iaitu set aksara lalai dalam [klien] dan aksara lalai dalam [mysqld]. sambungan dan pangkalan data secara lalai Pengekodan yang kami nyatakan di atas sebenarnya ialah parameter baris perintah character_set_client apabila klien MYSQL menyambung ke pelayan, untuk memberitahu pelayan MYSQL tentang pengekodan lalai . Lebih kerap daripada tidak, ia disebabkan oleh membetulkan beberapa pepijat kecil selepas dikeluarkan, membuka halaman dalam pengekodan yang salah dan kemudian menyimpannya. Atau anda menggunakan beberapa perisian FTP untuk mengubah suai terus fail dalam talian, seperti CuteFTP Disebabkan konfigurasi pengekodan perisian yang salah, pengekodan yang salah ditukar. 3. Sesetengah rakan yang menyewa hos maya masih mempunyai kod bercelaru walaupun tiga pengekodan di atas ditetapkan dengan betul. Sebagai contoh, jika halaman web dikodkan dalam GB2312, ia sentiasa dikenali sebagai UTF-8 apabila dibuka oleh penyemak imbas seperti IE , halaman dipaparkan seperti biasa. Sebabnya ialah pelayan Apache menetapkan pengekodan lalai global pelayan dan menambah AddDefaultCharset UTF-8 dalam httpd.conf. Pada masa ini, pelayan akan mula-mula menghantar pengepala HTTP ke penyemak imbas, dan keutamaannya lebih tinggi daripada pengekodan yang diisytiharkan dalam halaman Sememangnya, penyemak imbas akan mengecamnya secara salah. Terdapat dua penyelesaian. Pentadbir harus menambah AddDefaultCharset GB2312 pada fail konfigurasi mesin maya mereka sendiri untuk mengatasi konfigurasi global atau mengkonfigurasinya dalam .htaccess dalam direktori mereka sendiri.
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika php membaca aksara Cina yang kacau daripada pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!