Sett HTTP-header til UTF-8 ved hjelp av PHP

Jeg har flere PHP sider som gjengir forskjellige ting i HTML sider med følgende kode.

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Men når jeg validerer ved hjelp av W3C validator kommer den opp med:

Tegnkodingen spesifisert i HTTP-headeren (iso-8859-1) er forskjellig fra verdien i <meta>-elementet (utf-8).

Jeg er ganske ny på PHP, og jeg lurte på om jeg kunne og burde endre overskriften for PHP-filene slik at de samsvarer med HTML-filene.

Løsning

Bruk header for å endre HTTP-headeren:

header('Content-Type: text/html; charset=utf-8');

Merk at du må kalle denne funksjonen før noen utdata er sendt til klienten. Ellers har headeren også blitt sendt, og du kan selvsagt ikke endre den lenger. Du kan sjekke det med headers_sent. Se manual page of header for mer informasjon.

Kommentarer (6)

Forsikre deg først om at selve PHP-filene er UTF-8 kodet.

Metakoden ignoreres av noen nettlesere. Hvis du bare bruker ASCII-tegn, spiller det uansett ingen rolle.

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

header('Content-Type: text/html; charset=utf-8');
Kommentarer (0)

Dette er et problem med webserveren din som sender ut en HTTP-header som ikke samsvarer med den du definerer. For instruksjoner om hvordan du får serveren til å sende riktige headere, se denne siden.

Ellers kan du også bruke PHP til å endre overskriftene, men dette må gjøres før du sender ut tekst ved hjelp av denne koden:

header('Content-Type: text/html; charset=utf-8');

Mer informasjon om hvordan du sender ut overskrifter ved hjelp av PHP finner du i dokumentasjonen for header-funksjonen.

Kommentarer (0)