" di hadapan end; 2. Dalam Dalam php, anda boleh menetapkan aksara melalui "header("content-type:text/html; charset=xxx");"."/> " di hadapan end; 2. Dalam Dalam php, anda boleh menetapkan aksara melalui "header("content-type:text/html; charset=xxx");".">

Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah kacau Cina dalam halaman php html

Bagaimana untuk menyelesaikan masalah kacau Cina dalam halaman php html

藏色散人
藏色散人asal
2023-01-20 09:21:134409semak imbas

Penyelesaian kepada masalah bercelaru bahasa Cina dalam halaman html php: 1. Tetapkan pengekodan aksara seluruh halaman melalui "" di hujung hadapan 2. Dalam php, hantarkan "header("content- type:text/html ; charset=xxx");" Tetapkan aksara.

Bagaimana untuk menyelesaikan masalah kacau Cina dalam halaman php html

Persekitaran pengendalian tutorial ini: sistem Windows 10, PHP versi 8.1, komputer DELL G3

Cara menyelesaikan masalah aksara Cina bercelaru dalam halaman php html selesaikan?

Halaman web bahagian hadapan, pengekodan aksara pangkalan data php dan mysql (selesaikan masalah kod bahasa Cina dan lain-lain yang kacau)

Pembangunan web selalunya melibatkan bahagian hadapan -end web page - php - —Interaksi data antara mysql biasanya tidak mempunyai sebarang masalah apabila data hanya dalam bahasa Inggeris, tetapi apabila ia melibatkan bahasa Cina, pengekodan aksara di tiga tempat adalah tidak konsisten (contohnya, halaman web menggunakan gbk dan mysql menggunakan utf-8) Ia mungkin membawa kepada aksara yang bercelaru

(Nota: Untuk maklumat tentang pengekodan aksara, sila rujuk Ensiklopedia Baidu: http://baike.baidu.com/view/1204863.htm? fr=aladdin)

Pengekodan halaman web bahagian hadapan:

Biasanya kami fikir kami boleh lulus item seperti ) untuk menetapkan pengekodan aksara bagi keseluruhan halaman Kebanyakan halaman boleh menggunakan kaedah ini untuk memberitahu pelayar apa pengekodan untuk digunakan semasa memaparkan halaman ini, tetapi kadangkala kita akan mendapati bahawa terdapat Ayat ini masih tidak berfungsi Tidak kira jenis xxx, pelayar sentiasa menggunakan pengekodan yang sama

Situasi ini melibatkan pengepala sebahagian daripada komunikasi protokol http Sebenarnya, Apabila pengguna melayari halaman web, kandungan yang dihantar oleh pelayan kepada pengguna bukan sahaja termasuk halaman web kami (termasuk kandungan kod seperti html/css/js), tetapi juga termasuk deskriptif. kandungan yang dipanggil pengepala, yang memberitahu klien apa yang akan berlaku Jenis data yang diterima (sama ada HTML, teks biasa, fail multimedia, dll.), saiz, sumber dan maklumat lain (jika anda ingin melihat maklumat ini. , anda boleh menggunakan alat telnet (bukan melalui penyemak imbas) untuk memulakan permintaan get dan lain-lain sendiri mengikut protokol http Cuba Memandangkan pengepala dihantar sebelum html, keutamaan daripada pengepala. Jika pengepala sudah mengandungi perihalan pengekodan aksara halaman web, pelayar akhirnya akan dihuraikan mengikut set pengekodan aksara yang dinyatakan dalam pengepala

Dalam PHP, anda boleh menggunakan header("content-type:text/html; charset=xxx"); untuk menghantar tajuk tentang set aksara

Untuk pelayan apache, ia mempunyai fungsi AddDefaultCharset, yang bermaksud bahawa pengepala yang sepadan. akan ditetapkan mengikut set aksara lalai pelayan untuk setiap halaman web yang dihantar Semak /etc/apache2/httpd.conf (sebelum 2.4) atau /etc/apache2/conf-available/charset.conf (2.4 dan lebih baru). ayat AddDefaultCharset xxx Jika ayat ini tidak diulas, maka untuk setiap halaman web Fungsi menambah pengepala set aksara lalai dihidupkan Pada masa ini, menetapkan set aksara dalam teg .

Nota: Kaedah pengekodan yang ditunjukkan pada halaman html hendaklah konsisten dengan kaedah pengekodan yang digunakan untuk menyimpan halaman html sebenar (teks biasa sebenarnya).

Secara umumnya, untuk serasi dengan bahasa Cina dan lebih banyak lagi bahasa lain, menggunakan pengekodan utf-8 adalah cara paling mudah, kerana utf-8 menyokong hampir semua bahasa yang biasa digunakan di dunia.

pengekodan pangkalan data mysql:

Dalam terminal mysql -uusername -ppassword dan kemudian masukkan program kawalan mysql, kemudian taip show variables seperti 'character%'; yang Titik koma tidak boleh ditinggalkan semasa menaip pernyataan arahan atau pernyataan sql dalam terminal mysql) Anda boleh melihat gambar yang serupa dengan yang berikut:

Di atas menyenaraikan set aksara yang digunakan oleh mysql pada pelbagai peringkat , di mana (*)

set-karakter-pelayan/set-karakter lalai: set aksara pelayan, digunakan secara lalai.

pangkalan data set aksara: set aksara pangkalan data.

jadual set aksara: set aksara jadual pangkalan data.
Keutamaan meningkat dalam urutan. Oleh itu, secara amnya anda hanya perlu menetapkan pelayan set aksara, dan tidak menentukan set aksara apabila mencipta pangkalan data dan jadual Dengan cara ini, set aksara set aksara digunakan secara seragam.
set watak-klien: Set watak pelanggan. Set aksara lalai pelanggan. Apabila pelanggan menghantar permintaan kepada pelayan, permintaan itu dikodkan dalam set aksara ini.
keputusan-set aksara: Set aksara keputusan. Apabila pelayan mengembalikan hasil atau maklumat kepada klien, hasilnya dikodkan dalam set aksara ini.
Di sisi klien, jika set aksara-hasil tidak ditakrifkan, set aksara-set-klien set digunakan sebagai set aksara lalai. Jadi hanya perlu menetapkan set watak-set-klien.

Jadi, kita akan mendapati bahawa pelayan set aksara yang ditunjukkan dalam gambar di atas tidak menggunakan utf8 (nota: dalam mysql, kaedah pengekodan utf-8 dinyatakan sebagai utf8, tanpa "-"). Ini kerana kaedah storan lalai mysql adalah latin1 tanpa pengubahsuaian. Dalam kes ini, apabila kita menggunakan terminal mysql untuk mencipta pangkalan data dan jadual data, jika set aksara yang digunakan tidak dinyatakan dalam pernyataan sql, pengekodan yang digunakan untuk penyimpanan akan menjadi latin1 Jelas sekali, aksara Cina disimpan dalam Kaedah pengekodan ini pada asalnya digunakan untuk menyimpan teks Latin pasti akan bercelaru apabila dipaparkan.

Jadi bagaimana untuk mengubah suainya? Anda boleh menggunakan set character-set-server = utf8; ). Selepas itu, apabila anda menggunakan SQL untuk mencipta jadual dalam terminal, kaedah pengekodan storan jadual ialah UTF-8.

Walau bagaimanapun, pengubahsuaian ini hanya berkesan untuk perkhidmatan semasa. Gunakan quit selepas keluar dan memasuki terminal mysql sekali lagi, anda akan mendapati set aksara telah bertukar kembali kepada latin1. Maklumat yang saya temui setakat ini menunjukkan bahawa kaedah untuk membuat pengubahsuaian kekal hanya dicapai dengan mengubah suai parameter kompilasi semasa menyusun semula mysql Jika ada pakar yang tahu bagaimana untuk mencapai ini tanpa menyusun, sila tinggalkan mesej untuk memberitahu saya.

pengekodan php:

Jadi, apabila ia berkaitan dengan mysql, bagaimanakah php memastikan tiada aksara bercelaru muncul semasa penghantaran data apabila berinteraksi dengan mysql?

Mengikut huraian di (*), sebenarnya, untuk mengelakkan aksara bercelaru semasa menyimpan dan mendapatkan semula data daripada mysql, kami hanya perlu menetapkan tiga parameter sistem berikut untuk memadankan watak set aksara pelayan- set -Pelayan set aksara yang sama. Ia adalah:
set_karakter_klien: Set watak pelanggan.
character_set_results: Set aksara hasil.
character_set_connection: set aksara sambungan.
Menetapkan ketiga-tiga parameter sistem ini boleh dicapai dengan menghantar pernyataan ke MySQL: set names xxx (xxx boleh utf8)

Oleh itu, apabila ia datang untuk menghantar aksara Cina dan bukan bahasa Inggeris lain daripada php ke mysql, dalam Selepas menggunakan mysql_query("set names utf8"); pernyataan selepas pernyataan mysql_connect (diandaikan bahawa storan pangkalan data menggunakan utf8), anda boleh menghantar dan mendapatkan semula bahasa Cina dengan selamat.

Selain itu, memandangkan halaman HTML sebenarnya mungkin dijana secara dinamik oleh PHP, bagaimana untuk memastikan kaedah pengekodan yang digunakan oleh halaman yang dijana secara dinamik PHP adalah sama seperti yang diisytiharkan dalam pengepala atau ?

Cari fail php.ini dalam direktori php dan ubah suai default_charset = "utf-8" untuk menjadikan php menggunakan utf-8 untuk pengekodan semasa mengeluarkan halaman.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah kacau Cina dalam halaman php html. 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