Rumah  >  Soal Jawab  >  teks badan

Merangkul UTF-8 dari awal hingga akhir

Saya sedang menyediakan pelayan baharu dan mahukan sokongan penuh UTF-8 dalam aplikasi web saya. Saya telah mencuba ini pada masa lalu pada pelayan sedia ada, tetapi selalu nampaknya terpaksa kembali ke ISO-8859-1.

Di manakah saya perlu menetapkan pengekodan/charset? Saya tahu saya perlu mengkonfigurasi Apache, MySQL dan PHP untuk melakukan ini - adakah terdapat beberapa senarai semak standard yang boleh saya ikuti, atau mungkin menyelesaikan masalah di mana ketidakpadanan berlaku?

Ini berfungsi pada pelayan Linux baharu yang menjalankan MySQL 5, PHP, 5 dan Apache 2.

P粉925239921P粉925239921370 hari yang lalu790

membalas semua(2)saya akan balas

  • P粉482108310

    P粉4821083102023-10-16 00:11:18

    Saya ingin menambah satu perkara kepada jawapan yang sangat baik chazomaticus:

    Juga jangan lupa teg META (seperti ini, atau versi HTML4 atau XHTMLnya):

    Ini mungkin kelihatan remeh, tetapi IE7 telah memberi saya masalah sebelum ini.

    Saya melakukan semuanya dengan betul; pangkalan data, sambungan pangkalan data dan pengepala HTTP Jenis Kandungan semuanya ditetapkan kepada UTF-8, yang berfungsi dengan baik dalam semua penyemak imbas lain, tetapi Internet Explorer masih berkeras untuk menggunakan pengekodan "Eropah Barat".

    Ternyata halaman tersebut tiada tag META. Menambahnya menyelesaikan masalah.

    Editor:

    W3C sebenarnya mempunyai bahagian yang cukup besar khusus untuk I18N. Mereka mempunyai beberapa artikel yang berkaitan dengan isu ini - menerangkan aspek HTTP, (X)HTML dan CSS:

    Mereka mengesyorkan menggunakan kedua-dua pengepala HTTP dan teg meta HTML (atau pengisytiharan XML dalam kes XHTML bertindak sebagai XML).

    balas
    0
  • P粉457445858

    P粉4574458582023-10-16 00:05:39

    Storan Data:

    • Nyatakan utf8mb4 字符集。这使得 MySQL 物理存储和检索以 UTF-8 原生编码的值。请注意,如果指定了 utf8mb4_* 排序规则(没有任何显式字符集),MySQL 将隐式使用 utf8mb4 pengekodan untuk semua jadual dan lajur teks dalam pangkalan data.

    • Dalam versi MySQL yang lebih lama (< 5.5.3) 中,不幸的是,您将被迫仅使用 utf8, ia hanya menyokong subset aksara Unicode. Saya harap saya bergurau.

    Akses Data:

    utf8mb4

    /utf8 seperti yang dinyatakan di atas.

    🎜 🎜 🎜🎜Output🎜: 🎜
    • UTF-8 hendaklah ditetapkan dalam pengepala HTTP, seperti fungsi Content-Type:text/html;字符集=utf-8。您可以通过设置 default_charset 在 php.ini 中(首选),或手动使用 header().
    • Jika aplikasi anda memindahkan teks ke sistem lain, mereka juga perlu mengetahui pengekodan aksara. Untuk aplikasi web, penyemak imbas mesti diberitahu pengekodan untuk menghantar data (melalui pengepala respons HTTP atau metadata HTML). < /里>
    • Gunakan json_encode() 对输出进行编码时,添加 JSON_UNESCAPED_UNICODE sebagai hujah kedua.

    Masuk :

    • Pelayar akan menyerahkan data untuk set aksara yang ditentukan oleh dokumen, jadi tidak perlu melakukan sebarang operasi khas pada input.
    • Jika anda mempunyai keraguan tentang pengekodan permintaan (sekiranya ia mungkin telah diganggu), anda boleh mengesahkan bahawa setiap rentetan yang diterima adalah UTF-8 yang sah sebelum cuba menyimpan atau menggunakannya di mana-mana sahaja. mb_check_encoding() PHP melakukan perkara berikut: helah, tetapi anda perlu menggunakannya secara agama. Tidak ada cara untuk mengatasinya, kerana pelanggan yang berniat jahat boleh menyerahkan data dalam mana-mana pengekodan yang mereka mahu, dan saya tidak menemui helah untuk mendapatkan PHP melakukan ini dengan pasti untuk anda.

    Nota kod lain:

    • Jelas sekali, semua fail yang anda akan berikan (PHP, HTML, JavaScript, dll.) hendaklah dikodkan menggunakan UTF-8 yang sah.

    • Anda perlu memastikan anda selamat setiap kali anda mengendalikan rentetan UTF-8. Malangnya, ini adalah bahagian yang paling sukar. Anda mungkin mahu menggunakan sambungan mbstring PHP secara meluas.

    • Secara lalai, operasi rentetan terbina dalam PHP tidak UTF-8 selamat. Anda boleh melakukan beberapa operasi dengan selamat (seperti penggabungan) menggunakan manipulasi rentetan PHP biasa, tetapi untuk kebanyakan kes anda harus menggunakan fungsi mbstring yang setara.

    • Untuk mengetahui perkara yang anda lakukan (baca: jangan kacau), anda benar-benar perlu memahami UTF-8 dan cara ia berfungsi pada tahap yang paling rendah. Semak mana-mana pautan di utf8.com untuk mendapatkan beberapa sumber hebat tentang semua yang anda perlu ketahui.

    balas
    0
  • Batalbalas