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 in charset kenmerk van de HTTP-reactie Content-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 van ISO-8859-2 blijkbaar heeft voorrang op de eerste van UTF-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

InformationsquelleAutor mkas | 2011-10-18

 

One Reply
  1. 7

    Uitschakelen standaard charset:

    AddDefaultCharset Off
    • Ik denk, dat die ertoe zal leiden dat andere pagina ‘ s op de server die moet worden gecodeerd in ISO zal niet correct worden weergegeven. (Ook te AddDefaultCharset UTF-8.)
    • Als apache niet verzenden van de charset in de headers van de browsers denk dat de codering. Meest waarschijnlijke ze zal denk iso-8859-2.
    • Je hebt gelijk, het hielp. Ik hoop dat geldig is en in overeenstemming met strandards.
    • Maak je geen zorgen over het feit dat het ongeldig is. Het is de standaard waarde van apache. Op een of andere manier uw server anders geconfigureerd. Dus u bent nu goed.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *