Welke notatie moet ik gebruiken om een charset te definiëren voor HTML5 Doctype?
Kort:
<meta charset="utf-8" />
Lang:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
In HTML5 zijn ze gelijkwaardig. Gebruik de kortere, die is makkelijker te onthouden en te typen. Browserondersteuning is prima omdat het is ontworpen voor achterwaartse compatibiliteit.
Beide vormen van de meta charset declaratie zijn equivalent en zouden hetzelfde moeten werken in alle browsers. Maar er zijn een paar dingen die je moet onthouden als je de karakterset van je webbestanden als UTF-8 declareert:
Apache servers zijn standaard geconfigureerd om bestanden in ISO-8859-1 te serveren, dus u moet de volgende regel toevoegen aan uw .htaccess
bestand:
AddDefaultCharset UTF-8
Dit zal Apache instellen om uw bestanden te serveren met UTF-8 codering in de Content-Type header, maar uw bestanden moeten om te beginnen in UTF-8 (zonder BOM) zijn opgeslagen.
Notepad kan uw bestanden niet opslaan in UTF-8 zonder de BOM. Een gratis editor die dat wel kan is Notepad++. In de menubalk van het programma selecteert u "Codering > Encoderen in UTF-8 zonder BOM". U kunt ook bestanden openen en opnieuw opslaan in UTF-8 met "Encoding > Convert to UTF-8 without BOM".
Meer over de Byte Order Mark (BOM) op Wikipedia.
Een andere reden om voor de korte te kiezen is dat die overeenkomt met andere gevallen waarin je een tekenset in markup zou kunnen specificeren. Bijvoorbeeld:
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
Consistentie helpt om fouten te verminderen en code leesbaarder te maken.
Merk op dat het charset attribuut hoofdletterongevoelig is. Je kunt UTF-8 of utf-8 gebruiken, maar UTF-8 is duidelijker, leesbaarder, nauwkeuriger.
Er is ook geen enkele reden om een andere waarde dan UTF-8 te gebruiken in het meta charset attribuut of in de page header. UTF-8 is de standaard codering voor webdocumenten sinds HTML4 in 1999 en de enige praktische manier om moderne webpagina's te maken.
Ook moet je HTML entiteiten niet in UTF-8 gebruiken. Tekens zoals het copyrightsymbool moeten direct worden getypt. De enige entiteiten die je moet gebruiken zijn voor de 5 gereserveerde markup karakters: kleiner dan, groter dan, ampersand, priem, dubbel priem. Entiteiten hebben een HTML parser nodig, die je misschien niet altijd wilt gebruiken, ze introduceren fouten, maken je code minder leesbaar, vergroten je bestandsgrootte, en decoderen soms verkeerd in verschillende browsers, afhankelijk van welke entiteiten je hebt gebruikt. Leer hoe je copyright, trademark, open quote, close quote, apostrof, em dash, en dash, bullet, euro, en alle andere karakters die je tegenkomt in je inhoud kunt typen/invoegen, en gebruik die werkelijke karakters in je code. De Mac heeft een tekenviewer die je kunt inschakelen in de Systeemvoorkeur voor het toetsenbord, en je kunt de tekens die je nodig hebt zoeken en vervolgens slepen, of de bijbehorende toetsenbordviewer gebruiken om te zien welke toetsen je moet typen. Bijvoorbeeld, handelsmerk is Option+2. UTF-8 bevat alle tekens en symbolen van elke geschreven menselijke taal. Er is dus geen excuus om -- te gebruiken in plaats van een em-streepje. Het is geen slecht idee om ook de regels van interpunctie en typografie te leren ... bijvoorbeeld, weten dat een punt binnen een aanhalingsteken hoort, niet erbuiten.
Het gebruik van een <meta> tag voor iets als content-type en encoding is zeer ironisch, want zonder die dingen te weten, kun je het bestand niet ontleden om de waarde van de meta tag te krijgen.
Nee, dat is niet waar. De browser begint met het parsen van het bestand als de standaard encoding van de browser's, ofwel UTF-8 of ISO-8859-1. Aangezien US-ASCII een subset is van zowel ISO-8859-1 als UTF-8, kan de browser
in beide gevallen prima lezen ... het is hetzelfde. Wanneer de browser de meta charset tag tegenkomt, en de encoding is anders dan wat de browser al gebruikt, dan laadt de browser de pagina opnieuw in de gespecificeerde encoding. Daarom zetten we de meta charset tag bovenaan, direct na de head tag, vóór iets anders, zelfs de titel. Op die manier kun je UTF-8 tekens in je titel gebruiken.U moet uw bestand(en) opslaan in UTF-8 encoding zonder BOM
Dat is niet helemaal waar. Als u alleen US-ASCII-tekens in uw document hebt, kunt u het opslaan als US-ASCII en het serveren als UTF-8, omdat het een subset is. Maar als er Unicode-tekens in staan, heb je gelijk, dan moet je opslaan als UTF-8 zonder BOM.
Als je een goede tekst editor wilt die je bestanden opslaat in UTF-8, raad ik Notepad++ aan.
Op de Mac kun je Bare Bones TextWrangler (gratis) uit de Mac App Store gebruiken, of Bare Bones BBEdit dat in de Mac App Store te vinden is voor $39.99 ... erg goedkoop voor zo'n geweldig programma. In beide programma's is er een menu onderaan het documentvenster waar je de documentcodering kunt opgeven en je kunt eenvoudig kiezen voor "UTF-8 no BOM". En natuurlijk kun je dat als standaard instellen voor nieuwe documenten in Voorkeuren.
Maar als uw Webserver de encoding in de HTTP header serveert, wat aanbevolen wordt, zijn beide [meta tags] overbodig.
Dat is onjuist. Je moet de encoding natuurlijk in de HTTP header zetten, maar je moet het ook in het meta charset attribuut zetten, zodat de pagina door de gebruiker kan worden opgeslagen, uit de browser op lokale opslag en dan later weer geopend, in welk geval de enige indicatie van de encoding die aanwezig zal zijn, het meta charset attribuut is. Je moet ook een base tag instellen om dezelfde reden ... op de server is de base tag onnodig, maar wanneer geopend vanuit lokale opslag, zorgt de base tag ervoor dat de pagina werkt alsof hij op de server staat, met alle assets op hun plaats enzovoort, geen gebroken links.
AddDefaultCharset UTF-8
Of je kunt gewoon de encoding van bepaalde bestandstypen veranderen, zoals dit:
AddType text/html;charset=utf-8 html
Een tip om zowel UTF-8 als Latin-1 (ISO-8859-1) bestanden te serveren is om de UTF-8 bestanden een "text" extensie te geven en Latin-1 bestanden "txt."
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Tenslotte, overweeg uw documenten op te slaan met Unix regeleinden, niet de oude DOS of (klassieke) Mac regeleinden, die niet'helpen en kwaad kunnen, vooral in de toekomst als we verder en verder van deze oude systemen verwijderd raken. Een HTML document met geldige HTML5, UTF-8 codering, en Unix regeleinden is een goed uitgevoerde taak. Je kunt dat document in vele contexten delen, bewerken, opslaan, lezen, herstellen en erop vertrouwen. Het is een lingua franca. Het is digitaal papier.