Saya memiliki halaman HTML yang dengan benar (penyandian fisik pada disk cocok dengan itu) mengumumkan Tipe-Kontennya :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8">
<title> ...
Membuka file dari disk di browser (Google Chrome, Firefox) berfungsi dengan baik.
Meminta melalui HTTP, server web mengirimkan header Tipe Konten yang berbeda:
$ curl -I http://example.com/file.html
HTTP/1.1 200 OK
Date: Fri, 19 Oct 2012 10:57:13 GMT
...
Content-Type: text/html; charset=ISO-8859-1
(lihat baris terakhir). Browser kemudian menggunakan ISO-8859-1 untuk menampilkan yang merupakan hasil yang tidak diinginkan.
Apakah ada cara umum untuk mengganti header server yang dikirim ke browser dari dalam dokumen HTML?
;charset=...
dari header http. Situs ini bekerja dengan sangat baikContent-Type: text/html
, file yang berbeda memiliki penyandian berbeda di server. (Saya khawatir ini tidak mungkin juga, karena saya pikir saya memang mencarinya beberapa minggu yang lalu tetapi hasilnya belum cukup final). Untuk berjaga-jaga, Anda bisa memberi penerangan di depan.Anda harus mengatur sesuatu seperti ini di root .htaccess Anda
sumber
Tidak, itu tidak mungkin dari dalam HTML. Header respons server diutamakan di atas meta-tag dokumen. Seperti yang ditentukan dalam 5.2.2 Menentukan pengkodean karakter - HTML 4.01 Spesifikasi :
Jadi ini memerlukan konfigurasi di sisi server. Namun seiring bab ini berlanjut:
Dalam kasus saya header Tipe Konten server berisi tipe mime kanan tetapi rangkaian karakter yang salah .
Ternyata, konfigurasi Apache httpd saya telah mengatur
AddDefaultCharset
dihidupkan yang menambahkan; charset=ISO-8859-1
bagian. Menempatkan ke direktori root situs web.htaccess
baris berikut:informasi charset telah dihapus:
(lihat baris terakhir, tidak ada
; charset=...
bagian). Ini dikombinasikan dengan tag meta html memicu heuristik browser tersebut untuk mengambil alih charset dari tag meta. Situs web diterjemahkan dengan benar.Diuji dengan:
Ketiga browser ini memiliki masalah dengan konfigurasi asli dan berfungsi sekarang (semuanya pada Fedora 17).
Tidak ada masalah sejak awal. Keduanya lebih memilih UTF-8 dari meta-tag daripada pengaturan ISO-8859-1 dari server.
Tidak mendukung UTF-8 sehingga selalu memilih Barat (Latin1) terlepas dari pengaturan server dan meta-tag.
sumber
Selain apa yang dikatakan di sini, saya akan mencoba menggunakan charset yang sama di semua halaman - lebih disukai
UTF-8
(tetapi jika hampir semuanyaiso-8859-1
, gunakan ini).Untuk mengecek charset file dengan cepat, Anda dapat mencoba:
Untuk memeriksa charset dari semua file di pohon, Anda dapat mencoba:
atau (memanggil
file
perintah hanya sekali):Untuk mendapatkan ringkasan, gunakan
-b
opsi kefile
perintah (untuk menghilangkan nama file) dan pipa hasilnyasort | uniq -c
.sumber