- Wprowadzenie
- Typ dokumentu HTML5
- Element html
- Element head
- Kodowanie znaków w HTML5
- Relacje między dokumentami
- Elementy semantyczne HTML5
- Obsługa nieznanych elementów
- Nagłówki w HTML5
- Artykuły w HTML5
- Elementy daty i godziny HTML5
- Nawigacja w HTML5
- Stopka strony w HTML5
Mówiąc „tekst” najczęściej mamy na myśli znaki i cyfry, które widzimy na ekranie monitora. Jednak komputery nie porozumiewają się przy użyciu znaków i cyfr dziesiętnych, tylko przy użyciu bitów i bajtów. Każdy fragment tekstu, jaki kiedykolwiek widziałeś na ekranie monitora był zapisany przy użyciu jakiegoś rodzaju kodowania znaków. Istnieją setki metod kodowania znaków. Niektóre z nich są specjalnie dostosowane do potrzeb konkretnych języków, jak rosyjski czy chiński albo angielski, a inne obejmują wiele języków. W uproszczeniu można powiedzieć, że kodowanie znaków to odwzorowanie tego, co widać na ekranie na to, co komputer przechowuje w pamięci i na dysku.
W rzeczywistości wszystko jest trochę bardziej skomplikowane. Jeden znak może występować w kilku kodowaniach i w każdym z nich może być przechowywany w pamięci lub na dysku przy użyciu innej sekwencji bajtów. Kodowanie znaków można więc traktować jako coś w rodzaju klucza pozwalającego rozszyfrować tekst. Gdy ktoś poda nam szereg bajtów i powie, że to jest tekst, musimy znać sposób kodowania znaków w tym tekście, aby móc rozszyfrować bajty do postaci znaków i wyświetlić je (albo jakoś przetworzyć bądź zrobić z nimi jeszcze coś innego).
Skąd w takim razie przeglądarka wie, jakie kodowanie znaków zostało zastosowane w otrzymanym od serwera strumieniu bajtów? Cieszę się, że pytasz. Jeśli interesowałeś się kiedyś nagłówkami HTTP, to możliwe że widziałeś już takie coś:
Content-Type: text/html; charset="utf-8"
Jest to informacja od serwera, że został wysłany dokument HTML, w którym znaki są zakodowane przy użyciu metody UTF-8. Niestety w całym internecie tylko garstka webmasterów ma kontrolę nad używanym przez siebie serwerem HTTP. Weźmy np. takiego Bloggera: treść tworzą indywidualni użytkownicy, ale serwery należą do Google. Dlatego w HTML 4 wprowadzono możliwość określania kodowania znaków bezpośrednio w dokumencie HTML. Kod podobny do poniższego pewnie też już nie raz widziałeś:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Wynika z niego, że zdaniem autora jest to dokument HTML zawierający znaki zakodowane przy użyciu metody UTF-8.
Obu opisanych technik można używać także w języku HTML5. Preferowaną metodą jest używanie nagłówka HTTP i jeśli jest on ustawiony, to przesłania ustawienie w elemencie meta. Ponieważ jednak nie każdy ma możliwość ustawiania nagłówków HTTP, element meta jest również wciąż dostępny. W HTML5 nawet go trochę uproszczono. Teraz wygląda tak:
<meta charset="utf-8" />
Działa to we wszystkich przeglądarkach. Skąd wzięła się ta skrócona składnia? Oto najlepsze objaśnienie, jakie udało mi się znaleźć:
Stosowanie kombinacji atrybutu
<meta charset>jest uzasadnione tym, że jest już zaimplementowana w aplikacjach klienckich, ponieważ ludzie lubią opuszczać cudzysłowy, jak tu:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;" charset="ISO-8859-2">
Istnieje nawet kilka przypadków testowych <meta charset>, które możesz obejrzeć jeśli nie wierzysz, że przeglądarki to obsługują.
Pytanie do profesora Kodeckiego
P: Ja nigdy nie używam dziwnych znaków. Czy mimo to muszę deklarować kodowanie znaków na swoich stronach?
O: Tak! Należy zawsze określać sposób kodowania znaków na wszystkich stronach HTML. Brak deklaracji kodowania może prowadzić do powstania luk w zabezpieczeniach.
Podsumujmy: kodowanie znaków jest skomplikowane a dekady używania słabego oprogramowania wykorzystywanego przez niedouczonych autorów również nie podziałało korzystnie. Należy zawsze określać kodowanie znaków w każdym dokumencie HTML albo stanie się coś złego. Można w tym celu użyć nagłówka HTTP Content-Type, deklaracji <meta http-equiv> albo krótszej deklaracji <meta charset>. Nieważne jak, ale jakoś trzeba te kodowanie określić. Internet ci za to podziękuje.




Wysyłam...
Dodaj komentarz