Έχω αρκετές σελίδες PHP που εκπέμπουν διάφορα πράγματα σε σελίδες HTML με τον ακόλουθο κώδικα.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Ωστόσο, όταν επικυρώνω χρησιμοποιώντας τον W3C validator εμφανίζεται το εξής: [W3C validator][4]:
Η κωδικοποίηση χαρακτήρων που καθορίζεται στην επικεφαλίδα HTTP (iso-8859-1) είναι διαφορετική από την τιμή στο στοιχείο <meta> (utf-8).
Είμαι αρκετά νέος στην PHP και αναρωτιόμουν αν θα μπορούσα και αν θα έπρεπε να αλλάξω την επικεφαλίδα για τα αρχεία PHP ώστε να ταιριάζει με τα αρχεία HTML.
Χρησιμοποιήστε header
για να τροποποιήσετε την επικεφαλίδα HTTP:
header('Content-Type: text/html; charset=utf-8');
Σημειώστε να καλέσετε αυτή τη συνάρτηση πριν από την αποστολή οποιασδήποτε εξόδου στον πελάτη. Διαφορετικά, η επικεφαλίδα έχει επίσης σταλεί και προφανώς δεν μπορείτε να την αλλάξετε πλέον. Μπορείτε να το ελέγξετε αυτό με την headers_sent
. Δείτε τη σελίδα εγχειριδίου της header
για περισσότερες πληροφορίες.
Πρώτα βεβαιωθείτε ότι τα ίδια τα αρχεία PHP είναι κωδικοποιημένα με UTF-8.
Η ετικέτα meta αγνοείται από ορισμένα προγράμματα περιήγησης. Εάν χρησιμοποιείτε μόνο χαρακτήρες ASCII, δεν έχει σημασία ούτως ή άλλως.
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
Αυτό είναι ένα πρόβλημα με τον διακομιστή ιστού που στέλνει μια επικεφαλίδα HTTP που δεν ταιριάζει με αυτήν που έχετε ορίσει. Για οδηγίες σχετικά με το πώς να κάνετε το διακομιστή να στέλνει τις σωστές επικεφαλίδες, δείτε αυτή τη σελίδα.
Διαφορετικά, μπορείτε επίσης να χρησιμοποιήσετε την PHP για να τροποποιήσετε τις επικεφαλίδες, αλλά αυτό πρέπει να γίνει πριν την εξαγωγή οποιουδήποτε κειμένου χρησιμοποιώντας αυτόν τον κώδικα:
header('Content-Type: text/html; charset=utf-8');
Περισσότερες πληροφορίες για το πώς να στέλνετε κεφαλίδες χρησιμοποιώντας την PHP μπορείτε να βρείτε στην τεκμηρίωση για τη συνάρτηση κεφαλίδας.