Hvilken notasjon skal jeg bruke for å definere tegnsett for HTML5 Doctype?
Kort:
<meta charset="utf-8" />
Lang:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
I HTML5 er de ekvivalente. Bruk den kortere, den er lettere å huske og skrive. Nettleserstøtte er bra siden den ble utviklet for bakoverkompatibilitet.
Begge formene for meta charset-erklæringen er likeverdige og skal fungere likt i alle nettlesere. Men det er et par ting du må huske på når du deklarerer tegnsettet til webfilene dine som UTF-8:
Apache-servere er konfigurert til å betjene filer i ISO-8859-1 som standard, så du må legge til følgende linje i .htaccess-filen:
AddDefaultCharset UTF-8
Dette vil konfigurere Apache til å betjene filene dine med UTF-8-koding i Content-Type response header, men filene dine må lagres i UTF-8 (uten BOM) til å begynne med.
Notepad kan ikke lagre filene dine i UTF-8 uten BOM. Et gratis redigeringsprogram som kan det, er Notepad++. På programmets menylinje velger du "Encoding" og "Encode in UTF-8 without BOM". Du kan også åpne filer og lagre dem på nytt i UTF-8 ved hjelp av "Encoding" og "Convert to UTF-8 without BOM".
En annen grunn til å velge den korte versjonen er at den samsvarer med andre tilfeller der du kan angi et tegnsett i markeringen. For eksempel
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
Konsistens bidrar til å redusere feil og gjøre koden mer lesbar.
Merk at attributtet charset er ufølsomt for store og små bokstaver. Du kan bruke UTF-8 eller utf-8, men UTF-8 er tydeligere, mer lesbart og mer nøyaktig.
Det er heller ingen som helst grunn til å bruke noen annen verdi enn UTF-8 i meta-tegnsettattributtet eller sideoverskriften. UTF-8 har vært standardkoding for nettdokumenter siden HTML4 i 1999 og er den eneste praktiske måten å lage moderne nettsider på.
Du bør heller ikke bruke HTML-entiteter i UTF-8. Tegn som copyright-symbolet bør skrives direkte. De eneste entitetene du bør bruke, er de fem reserverte markeringstegnene: mindre enn, større enn, ampersand, primtall, dobbelt primtall. Entiteter krever en HTML-parser, som du kanskje ikke alltid vil bruke fremover, de introduserer feil, gjør koden din mindre lesbar, øker filstørrelsen og noen ganger avkodes feil i forskjellige nettlesere, avhengig av hvilke entiteter du brukte. Lær hvordan du skriver inn/setter inn copyright, varemerke, åpent anførselstegn, lukket anførselstegn, apostrof, em-strek, en-strek, punktum, euro og andre tegn du støter på i innholdet ditt, og bruk disse tegnene i koden din. Mac-en har en tegnviser som du kan slå på i tastaturets systeminnstillinger, og du kan finne og deretter dra og slippe tegnene du trenger, eller bruke den tilsvarende tastaturviseren for å se hvilke taster du skal skrive. For eksempel er varemerke Option+2. UTF-8 inneholder alle tegn og symboler fra alle menneskelige skriftspråk. Så det er ingen unnskyldning for å bruke -- i stedet for en bindestrek. Det er ikke en dårlig idé å lære seg reglene for tegnsetting og typografi også ... for eksempel å vite at et punktum går inn i et nært sitat, ikke utenfor.
Å bruke en <meta> -kode for noe som innholdstype og koding er veldig ironisk, siden uten å vite disse tingene, kan du' t analysere filen for å få verdien av metataggen.
Nei, det er ikke sant. Nettleseren starter med å analysere filen som nettleserens standardkoding, enten UTF-8 eller ISO-8859-1. Siden US-ASCII er en delmengde av både ISO-8859-1 og UTF-8, kan nettleseren lese
helt fint uansett ... det er det samme. Når nettleseren støter på meta charset-taggen, og hvis kodingen er annerledes enn den nettleseren allerede bruker, laster nettleseren inn siden på nytt i den angitte kodingen. Det er derfor vi plasserer meta charset-taggen øverst, rett etter head-taggen, før noe annet, til og med tittelen. På den måten kan du bruke UTF-8-tegn i tittelen.Du må lagre filen(e) i UTF-8-koding uten BOM.
Det er ikke helt sant. Hvis du bare har US-ASCII-tegn i dokumentet ditt, kan du lagre det som US-ASCII og vise det som UTF-8, fordi det er et undersett. Men hvis det er Unicode-tegn, har du rett, du må lagre som UTF-8 uten BOM.
Hvis du vil ha en god tekstredigerer som vil lagre filene dine i UTF-8, anbefaler jeg Notepad++.
På Mac, bruk Bare Bones TextWrangler (gratis) fra Mac App Store, eller Bare Bones BBEdit som er på Mac App Store for $ 39.99 ... veldig billig for et så flott verktøy. I begge appene er det en meny nederst i dokumentvinduet der du spesifiserer dokumentkodingen, og du kan enkelt velge "UTF-8 no BOM". Og selvfølgelig kan du angi det som standard for nye dokumenter i Innstillinger.
Men hvis webserveren din serverer kodingen i HTTP-headeren,
som anbefales, er begge [metakoder] unødvendige.
Det er ikke riktig. Du bør selvfølgelig angi kodingen i HTTP-headeren, men du bør også angi den i meta-tegnsettattributtet slik at siden kan lagres av brukeren, ut av nettleseren til lokal lagring og deretter åpnes igjen senere, i hvilket tilfelle den eneste indikasjonen på kodingen som vil være til stede er meta-tegnsettattributtet. Du bør også angi en basetagg av samme grunn ... på serveren er basetaggen unødvendig, men når den åpnes fra lokal lagring, gjør basetaggen det mulig for siden å fungere som om den er på serveren, med alle ressursene på plass og så videre, ingen ødelagte lenker.
AddDefaultCharset UTF-8
Eller du kan bare endre kodingen av bestemte filtyper slik:
AddType text/html;charset=utf-8 html
Et tips for å betjene både UTF-8- og Latin-1-filer (ISO-8859-1) er å gi UTF-8-filene filtypen "text" og Latin-1-filene filtypen "txt";
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Til slutt bør du vurdere å lagre dokumentene dine med Unix-linjeavslutninger, ikke eldre DOS- eller (klassiske) Mac-linjeavslutninger, som ikke hjelper og kan skade, spesielt etter hvert som vi kommer lenger og lenger fra disse eldre systemene. Et HTML-dokument med gyldig HTML5, UTF-8-koding og Unix-linjeendelser er en godt utført jobb. Du kan dele og redigere og lagre og lese og gjenopprette og stole på det dokumentet i mange sammenhenger. Det er lingua franca. Det er digitalt papir.