Vraag vs


Om een ​​karakterset te definiëren voor HTML5 Doctype, welke notatie moet ik gebruiken?

  1. kort:

    <meta charset="utf-8" /> 
    
  2. Lang:

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

1387
2018-01-14 22:06


oorsprong


antwoorden:


In HTML5 zijn ze equivalent. Gebruik de kortere, het is gemakkelijker te onthouden en te typen. Browserondersteuning is prima omdat het is ontworpen voor achterwaartse compatibiliteit.


978
2018-01-14 22:09



Beide vormen van de meta charset verklaring is gelijkwaardig en zou hetzelfde moeten werken in browsers. Maar er zijn een paar dingen die u moet onthouden bij het declareren van uw webbestanden als UTF-8:

  1. Sla uw bestand (en) op in UTF-8-codering zonder de byte-order merk (BOM).
  2. Verklaar de codering in uw HTML-bestanden met meta charset (zoals hierboven).
  3. Uw webserver moet bedien uw bestanden door de UTF-8-codering in de HTTP-header Content Type te declareren.

Apache-servers zijn standaard geconfigureerd voor het weergeven van bestanden in ISO-8859-1, dus u moet de volgende regel toevoegen aan uw .htaccess het dossier:

AddDefaultCharset UTF-8

Hiermee wordt Apache geconfigureerd om uw bestanden weer te geven die UTF-8-codering aangeven in de responskop Content-Type, maar uw bestanden moet worden opgeslagen in UTF-8 (zonder stuklijst) om mee te beginnen.

Notepad kan uw bestanden niet opslaan in UTF-8 zonder de stuklijst. Een gratis editor die dat kan notepad ++. Selecteer in de menubalk van het programma "Codering> Coderen in UTF-8 zonder stuklijst". U kunt ook bestanden openen en ze opnieuw opslaan in UTF-8 met behulp van "Codering> Omzetten in UTF-8 zonder stuklijst".

Meer over de Byte Order Mark (BOM) op Wikipedia.


236
2018-05-21 07:26



Een andere reden om met de korte te gaan is dat deze overeenkomt met andere gevallen waarin u een tekenset in markeringen kunt opgeven. 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 karaktersetkenmerk hoofdletterongevoelig is. U kunt UTF-8 of utf-8 gebruiken, maar UTF-8 is duidelijker, leesbaarder en nauwkeuriger.

Er is ook absoluut geen enkele reden om een ​​andere waarde dan UTF-8 te gebruiken in het kenmerk meta charset of de paginakop. UTF-8 is de standaardcodering voor webdocumenten sinds HTML4 in 1999 en de enige praktische manier om moderne webpagina's te maken.

Gebruik ook geen HTML-entiteiten in UTF-8. Tekens zoals het copyright-symbool moeten rechtstreeks worden getypt. De enige entiteiten die u moet gebruiken, zijn voor de 5 gereserveerde markup-tekens: minder dan, groter dan, ampersand, prime, double prime. Entiteiten hebben een HTML-parser nodig, die u misschien niet altijd in de toekomst wilt gebruiken, ze introduceren fouten, maken uw code minder leesbaar, vergroten uw bestandsgroottes en worden soms verkeerd gedecodeerd in verschillende browsers, afhankelijk van de entiteiten die u hebt gebruikt. Leer hoe u auteursrecht, handelsmerk, open aanhalingsteken, citaat sluiten, apostrof, em streepje, en streepje, opsommingsteken, euro en andere tekens die u tegenkomt in uw inhoud kunt typen / invoegen en deze werkelijke tekens in uw code kunt gebruiken. De Mac heeft een Character Viewer die je kunt inschakelen in de systeemvoorkeur van het toetsenbord en je kunt de tekens die je nodig hebt vinden en vervolgens slepen en neerzetten, of de overeenkomende toetsenbordweergave gebruiken om te zien welke toetsen je moet typen. Het handelsmerk is bijvoorbeeld Option + 2. UTF-8 bevat alle tekens en symbolen uit elke geschreven menselijke taal. Er is dus geen excuus om te gebruiken - in plaats van een em-streepje. Het is ook geen slecht idee om de regels van interpunctie en typografie te leren kennen ... bijvoorbeeld wetende dat een punt in een nauwe quote gaat, niet daarbuiten.

Het gebruik van een tag voor iets als content-type en codering is hoogst   ironisch, want zonder die dingen te kennen, kon je het bestand niet ontleden   om de waarde van de metatag te krijgen.

Nee, dat is niet waar. De browser begint het bestand te parseren als de standaardcodering van de browser, ofwel UTF-8 of ISO-8859-1. Aangezien US-ASCII een subset is van zowel ISO-8859-1 en UTF-8, de browser kan prima lezen hoe dan ook ... het is hetzelfde. Wanneer de browser de meta charset-tag tegenkomt en de codering anders is dan wat de browser al gebruikt, laadt de browser de pagina opnieuw in de opgegeven codering. Daarom plaatsen we de meta charset-tag bovenaan, direct achter de head-tag, voor iets anders, zelfs de titel. Op die manier kunt u UTF-8-tekens in uw titel gebruiken.

U moet uw bestand (en) opslaan in UTF-8-codering zonder stuklijst

Dat is niet helemaal waar. Als u alleen US-ASCII-tekens in uw document hebt, kunt u het opslaan als US-ASCII en het als UTF-8 gebruiken, omdat het een subset is. Maar als er Unicode-tekens zijn, hebt u gelijk, u moet opslaan als UTF-8 zonder stuklijst.

Als u een goede teksteditor wilt die uw bestanden opslaat   in UTF-8 beveel ik Notepad ++ aan.

Op de Mac gebruikt u Bare Bones TextWrangler (gratis) uit de Mac App Store of Bare Bones BBEdit uit de Mac App Store voor $ 39,99 ... erg goedkoop voor zo'n geweldige tool. In beide apps bevindt zich een menu onder aan het documentvenster waarin u de documentcodering opgeeft en kunt u eenvoudig "UTF-8 no BOM" kiezen. En natuurlijk kunt u dat als standaard instellen voor nieuwe documenten in Voorkeuren.

Maar als uw webserver de codering in de HTTP-header serveert,   wat wordt aanbevolen, beide [metatags] zijn onnodig.

Dat is onjuist. Je moet natuurlijk de codering in de HTTP-header instellen, maar je moet hem ook in het meta charset-attribuut plaatsen, zodat de pagina door de gebruiker kan worden opgeslagen, uit de browser op lokale opslag en later weer kan worden geopend, in welk geval de enige indicatie van de codering die aanwezig zal zijn, is het kenmerk meta-tekenset. U moet ook om dezelfde reden een basistag instellen ... op de server is de basistag niet nodig, maar wanneer de basistag wordt geopend vanuit de lokale opslag, kan de pagina werken alsof deze zich op de server bevindt, met alle activa op zijn plaats enzovoort, geen verbroken koppelingen.

AddDefaultCharset UTF-8

Of je kunt gewoon de codering van bepaalde bestandstypen veranderen zoals:

AddType text/html;charset=utf-8 html

Een tip voor het dienen van zowel UTF-8 als Latin-1 (ISO-8859-1) bestanden is om de UTF-8-bestanden een "tekst" -extensie en Latin-1-bestanden "txt" te geven.

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

Tot slot, overweeg dan om uw documenten op te slaan met Unix-regeleinden, niet met legale DOS of (klassieke) Mac-regeleinden, die niet helpen en misschien pijn doen, vooral niet in de rij als we verder en verder komen van die verouderde systemen. Een HTML-document met geldige HTML5-, UTF-8-codering en Unix-regeleinden is een goed stuk werk. U kunt dit document in vele contexten delen en bewerken en opslaan en lezen en herstellen en erop vertrouwen. Het is lingua franca. Het is digitaal papier.


78
2017-08-20 20:26



<meta charset="utf-8">is geïntroduceerd met / voor HTML5.

Zoals vermeld in de documentatie, zijn beide geldig. Echter, <meta charset="utf-8"> is alleen voor HTML5 (en gemakkelijker te typen / onthouden).

Na verloop van tijd wordt de oude stijl verouderd in de nabije toekomst. Ik zou vasthouden aan het nieuwe <meta charset="utf-8">.

Er is maar één manier, maar omhoog. In het geval van tech is dat het oude (echt, ECHT snel) afbouwen

Documentatie:  HTML meta charset Attribuut-W3Schools


28
2018-06-25 21:04



Hoewel ik de andere antwoorden niet betwist, denk ik dat het volgende het vermelden waard is.

  1. De lange" (http-equiv) notatie en de "korte" is gelijk, wat het eerst komt wint;
  2. Webserverheaders overschrijven alle <meta> labels;
  3. BOM (Byte ordermarkering) overschrijft allesen in veel gevallen zal het van invloed zijn op html 4 (en waarschijnlijk ook andere dingen);
  4. Als u geen codering declareert, krijgt u waarschijnlijk uw tekst in "fallback-tekstcodering" die uw browser heeft gedefinieerd. Noch in Firefox noch in Chrome is het utf-8;
  5. Bij gebrek aan andere aanwijzingen zal de browser proberen uw document te lezen alsof het in ASCII was om de codering te krijgen, dus u kunt geen rare coderingen gebruiken (utf-16 met BOM zou dat wel moeten doen);
  6. Hoewel de specificaties zeggen dat de coderingsverklaring binnen de eerste 512 bytes van het document moet zijn, zullen de meeste browsers proberen meer dan dat te lezen.

Je kunt testen door te hardlopen echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 en met je browser naar localhost:4500. (Natuurlijk wilt u onderdelen wijzigen of verwijderen.) Het stuklijstgedeelte is \xef\xbb\xbf. Wees op je hoede voor de codering van je shell.)

Houd er rekening mee dat het erg belangrijk is dat u de codering expliciet declareert. Door te laten raden dat browsers kunnen leiden tot beveiligingsproblemen.


18
2018-01-15 00:03



Gebruik <meta charset="utf-8" /> voor webbrowsers bij gebruik van HTML5.

Gebruik <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> bij gebruik van HTML4 of XHTML, of voor verouderde dom-parsers, zoals DOMDocument in php


9
2017-11-26 08:08



Er is nieuws op gebaseerd Mozilla Foundation, en SitePoint

Gebruik deze waarde niet (http-equiv=content-type) omdat het verouderd is.   Geef de voorkeur aan charset attribuut op de <meta> element.    enter image description here


0
2017-08-15 23:22