Hoe te dwingen UTF-8-codering in de browser?
Ik heb de pagina welke codering wordt verklaard met
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Maar als ik de pagina een andere codering (ISO) is gekozen in de browser. Ik heb geprobeerd om de codering door PHP methode
header('Content-type: text/html; charset=utf-8');
Maar het hielp ook niet. Alle bron-bestanden zijn gecodeerd in UTF-8 (zonder BOM). De enige oplossing die ik heb geprobeerd en het werkte was het instellen van de codering in .htaccess
bestand door het toevoegen van AddDefaultCharset UTF-8
lijn, maar dan de andere pagina ‘ s op de server werden niet correct weergegeven. Hoe kan ik dit probleem oplossen?
- Houd er rekening mee dat de meta content type tag is genegeerd wanneer de pagina is via HTTP. Het is alleen gebruikt als u de browser de pagina op te slaan op schijf op en open het vervolgens vanaf de schijf door
file:///
. De charset als bedoeld incharset
kenmerk van de HTTP-reactieContent-Type
header wordt gebruikt wanneer de pagina is via HTTP. Misschien bent u het instellen van de kop te laat in PHP (dit is in te stellen voordat je schrijft een beetje naar de reactie, zou je echter op de hoogte gebracht van deze fout) als u hebt ingesteld op de juiste PHP error reporting niveau). - Hoe bent u in staat om te identificeren van de codering is anders? Zijn tekens niet worden weergegeven correct? Is het SQL DB opgehaald tekst, in welk geval mysql_set_charset kan helpen…
- dat zou niet zijn opgelost door het instellen van
AddDefaultCharset UTF-8
in.htaccess
. - ah, wist niet dat – bedankt! +1
- de php header is verzonden als eerste bits, niets voordat het is verzonden. Ik weet dat het verkeerde codering is gekozen want ik kan zien dat het in Firefox: scherm (Sorry voor de niet-engels-scherm, gekozen menu-items zegt: developer tools -> tekens -> unicode). In mijn pagina ISO-8859-2 is standaard ingesteld, maar als ik klik op UTF-8 alle speciale tekens worden correct weergegeven.
- Blijkbaar is de
header()
die u hebt ingesteld in PHP was is opgeheven ergens anders. Controleer de werkelijke response header waarde die uw browser heeft opgehaald. U kunt dat controleren in bijvoorbeeld Firebug is de Netto-paneel. - Je hebt twee charset kenmerken in
Content-Type
kop en de laatste vanISO-8859-2
blijkbaar heeft voorrang op de eerste vanUTF-8
. Dit is een onjuiste configuratie van de webserver of proxy gebruikt. U kunt niets doen tegen het uit in de PHP/HTML-kant. Edit: waarom heb je de opmerking te verwijderen? - Hier is de koptekst reactie
Date Tue, 18 Oct 2011 16:11:10 GMT Server Apache/2.2.6 (Fedora) X-Powered-By PHP/5.1.6 Content-Length 7967 Content-Type text/html; charset: utf-8; charset=ISO-8859-2
- Excuseer mij voor het verwijderen van de vorige reactie, ik wilde juiste opmaak. Bedankt voor uw hulp. Ik heb te controleren server configuratie dan.
- Je kon gewoon op de “bewerken” link op het einde van de reactie om reacties te bewerken. U kunt het bewerken van opmerkingen binnen 5 minuten na het plaatsen van de commentaar.
<meta>
is gebruikt voor het bepalen van het karakter codering van een pagina, zelfs als de pagina is via HTTP. Echter, de Content-Type header voorrang op de<meta>
tag, als het aanwezig is. Zie w3.org/TR/html401/charset.html#h-5.2.2
Uitschakelen standaard charset:
AddDefaultCharset UTF-8
.)