<meta charset="utf-8"> vs <meta http-equiv="Content-Type">

Kateri zapis moram uporabiti, če želim določiti znakovni niz za HTML5 Doctype?

  1. Kratek:

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

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

V jeziku HTML5 sta enakovredna. Uporabite krajšo, saj si jo je lažje zapomniti in vnesti. Podpora brskalnikov je v redu, saj je bila zasnovana za združljivost za nazaj.

Komentarji (16)

Obe obliki izjave meta charset sta enakovredni in bi morali v brskalnikih delovati enako. Vendar pa si morate pri deklariranju nabora znakov spletnih datotek kot UTF-8 zapomniti nekaj stvari:

  1. Datoteko(-e) shranite v kodiranju UTF-8 brez znaka byte-order mark (BOM).
  2. Kodiranje v svojih datotekah HTML razglasite z uporabo meta charset (kot zgoraj).
  3. Spletni strežnik mora obdelati vaše datoteke in v glavi HTTP Content-Type navesti kodiranje UTF-8.

Strežniki Apache so privzeto konfigurirani tako, da strežejo datoteke v kodi ISO-8859-1, zato morate v datoteko .htaccess dodati naslednjo vrstico:

AddDefaultCharset UTF-8

S tem bo Apache nastavljen tako, da bo vaše datoteke serviral z navedbo kodiranja UTF-8 v odzivni glavi Content-Type, vendar morajo biti vaše datoteke najprej shranjene v UTF-8 (brez BOM).

Beležnica ne more shraniti vaših datotek v UTF-8 brez BOM. Brezplačni urejevalnik, ki to omogoča, je Notepad++. V menijski vrstici programa izberite "Encoding > Encode in UTF-8 without BOM". Datoteke lahko odprete in ponovno shranite v UTF-8 tudi z uporabo "Encoding > Convert to UTF-8 without BOM".

Več o Byte Order Mark (BOM) na Wikipediji.

Komentarji (14)

Drugi razlog za izbiro kratkega je, da se ujema z drugimi primeri, ko lahko v oznakah določite nabor znakov. Na primer:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

Doslednost pomaga zmanjšati število napak in naredi kodo bolj berljivo.

Upoštevajte, da atribut charset ni občutljiv na velikost črk. Uporabite lahko UTF-8 ali utf-8, vendar je UTF-8 jasnejši, bolj berljiv in natančnejši.

Prav tako ni nobenega razloga, da bi v meta atributu charset ali glavi strani uporabili katero koli drugo vrednost kot UTF-8. UTF-8 je privzeto kodiranje za spletne dokumente od HTML4 leta 1999 in edini praktični način za izdelavo sodobnih spletnih strani.

Prav tako ne smete uporabljati entitet HTML v UTF-8. Znaki, kot je simbol za avtorske pravice, morajo biti vneseni neposredno. Edine entitete, ki jih morate uporabiti, so za 5 rezerviranih znakov za označevanje: manj kot, več kot, ampersand, prime, double prime. Entitete potrebujejo analizator HTML, ki ga v prihodnje morda ne boste vedno želeli uporabljati, saj vnašajo napake, vašo kodo naredijo manj berljivo, povečajo velikost datotek in se včasih v različnih brskalnikih dekodirajo napačno, odvisno od tega, katere entitete ste uporabili. Naučite se vnašati/vstavljati avtorske pravice, blagovne znamke, odprte in zaprte narekovaje, apostrofe, pomišljaje em, pomišljaje en, piko, evro in vse druge znake, ki jih srečate v vsebini, ter te dejanske znake uporabiti v svoji kodi. Mac ima pregledovalnik znakov, ki ga lahko vklopite v sistemskih nastavitvah za tipkovnico, v njem pa lahko poiščete in nato povlečete in spustite znake, ki jih potrebujete, ali pa uporabite ustrezen pregledovalnik tipkovnice, da vidite, katere tipke je treba vnesti. Na primer, blagovna znamka je Option+2. UTF-8 vsebuje vse znake in simbole iz vseh pisnih človeških jezikov. Zato ni opravičila za uporabo -- namesto pomišljaja em. Prav tako ni slaba ideja, da se naučite pravil ločil in tipografije ... na primer, da veste, da se pika postavi v zaprti narekovaj in ne zunaj njega.

Uporaba oznake <meta> za nekaj, kot sta content-type in encoding, je zelo primerna. ironična, saj brez poznavanja teh stvari ne bi mogli razčleniti datoteke da bi dobili vrednost meta oznake.

Ne, to ni res. Brskalnik začne analizirati datoteko kot privzeto kodiranje, bodisi UTF-8 bodisi ISO-8859-1. Ker je US-ASCII podmnožica ISO-8859-1 in UTF-8, lahko brskalnik dobro prebere tako ali tako ... je enako. Ko brskalnik naleti na oznako meta charset, če je kodiranje drugačno od tistega, ki ga brskalnik že uporablja, ponovno naloži stran v določenem kodiranju. Zato je oznaka meta charset na vrhu, takoj za oznako head, pred vsem drugim, tudi pred naslovom. Tako lahko v naslovu uporabite znake UTF-8.

Datoteko(-e) morate shraniti v kodiranju UTF-8 brez BOM

To ni povsem res. Če so v dokumentu samo znaki US-ASCII, ga lahko shranite kot US-ASCII in ga posredujete kot UTF-8, saj gre za podmnožico. Če pa so prisotni znaki Unicode, imate prav, morate shraniti kot UTF-8 brez BOM.

Če želite dober urejevalnik besedila, ki bo shranil vaše datoteke v UTF-8, priporočam Notepad++.

Na Macu uporabite Bare Bones TextWrangler (brezplačno) iz trgovine Mac App Store ali Bare Bones BBEdit, ki je v trgovini Mac App Store za 39,99 USD ... zelo poceni za tako odlično orodje. V obeh aplikacijah je na dnu okna dokumenta meni, v katerem določite kodiranje dokumenta in lahko preprosto izberete "UTF-8 no BOM". In seveda lahko to nastavite kot privzeto za nove dokumente v nastavitvah.

Če pa vaš spletni strežnik kodiranje navede v glavi HTTP, kar je priporočljivo, sta obe [meta oznaki] nepotrebni.

To je napačno. Kodiranje morate seveda določiti v glavi HTTP, vendar ga morate določiti tudi v atributu meta charset, tako da lahko uporabnik stran shrani iz brskalnika v lokalno shrambo in jo pozneje ponovno odpre; v tem primeru je edini podatek o kodiranju, ki bo prisoten, atribut meta charset. Iz istega razloga morate nastaviti tudi osnovno oznako ... v strežniku je osnovna oznaka nepotrebna, ko pa jo odprete iz lokalne shrambe, osnovna oznaka omogoča, da stran deluje, kot da je v strežniku, z vsemi sredstvi na mestu in tako naprej, brez prekinjenih povezav.

AddDefaultCharset UTF-8

Lahko pa preprosto spremenite kodiranje določenih vrst datotek, kot je to na primer:

AddType text/html;charset=utf-8 html

Nasvet za strežbo datotek UTF-8 in Latin-1 (ISO-8859-1) je, da datotekam UTF-8 dodelite končnico "text", datotekam Latin-1 pa "txt.";

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

Nazadnje, razmislite o shranjevanju dokumentov s končnicami vrstic Unixa in ne s starimi končnicami vrstic DOS-a ali (klasičnega) Maca, ki ne pomagajo in lahko škodujejo, zlasti v prihodnosti, ko se bomo vse bolj oddaljevali od teh starih sistemov. Dokument HTML z veljavnim jezikom HTML5, kodiranjem UTF-8 in končnicami vrstic Unix je dobro opravljeno delo. Ta dokument lahko delite in urejate in shranjujete in berete in obnovite in se nanj zanesete v številnih kontekstih. To je lingua franca. To je digitalni papir.

Komentarji (5)