Apple Facebook Google Microsoft badania bezpieczeństwo patronat DI prawa autorskie serwisy społecznościowe smartfony

Czym jest kodowanie znaków? Kodowanie znaków to zunifikowany sposób reprezentacji znaków drukowanych i symboli sterujących w formie liczbowej, w celu uproszczenia składowania, przetwarzania i przekazywania danych w sieciach teleinformatycznych. Termin ten nie jest związany tylko z informatyką, powszechnie znany jest alfabet Morse'a wykorzystywany w telegrafii czy alfabet Braille'a umożliwiający czytanie osobom niewidomym.

Od ASCII do Unikodu
Historycznie najstarszym i jednocześnie podstawowym systemem kodowania obecnie stosowanym w komputerach jest ASCII (ang. American Standard Code for Information Interchange). Standard ten jest 7-bitowy co oznacza, że pozwala zakodować 128 znaków. Definiuje 33 symbole sterujące, 94 znaki drukowane i znak spacji. System ten ogranicza jednak zestaw liter do alfabetu angielskiego. Współczesne komputery używają 8-bitowych bajtów do przechowywania danych w pamięci co dało możliwość rozszerzenia zestawu ASCII o nowe elementy. Tak powstały popularne 8-bitowe rodziny kodowania ISO 8859 oraz Windows-125X. Polskie znaki diakrytyczne umieszczone zostały odpowiednio w Windows-1250 i ISO 8859-2, ostatni zestaw został objęty Polską Normą.

Jeden bajt dający zapisać 256 symboli był niewystarczający do zapisania wszystkich alfabetów używanych na świecie. Powstało więc wiele standardów, dla szeregu języków wykluczających się. Każdy z nich korzystał z tego samego zakresu liczb 0-255. Stan taki utrudniał przetwarzanie dokumentów wielojęzykowych. W latach 90-tych zaproponowano standard Unicode będący w założeniu uniwersalnym zestawem znaków obejmującym wszystkie pisma świata. W podstawowej wersji każdy symbol zbioru reprezentowany jest jednoznacznie przez 2 bajty, co daje 65536 unikalnych znaków. Unicode nie definiuje sposobu kodowania, odpowiada tylko za "ponumerowanie" znaków. Najbardziej znanymi metodami reprezentacji są: UTF-8, UTF-16 i UTF-32.

Kodowanie znaków a strony WWW
Jeśli przeglądarka internetowa po otrzymaniu źródła strony nie jest w stanie sprecyzować kodowania znaków, użytkownik może otrzymać nieczytelną treść. Dlatego bardzo ważne jest określić standard zapisu dokumentów XHTML/HTML i arkuszy stylów CSS. Twórca serwisu internetowego powinien zadeklarować odpowiednie kodowanie witryny, a także przygotować treść używając tego kodowania. Obecnie dla polskich stron obowiązuje standard UTF-8 oraz ISO 8859-2. Dla stron wielojęzykowych najlepszym wyborem jest UTF-8.

Deklaracja kodowania na poziomie nagłówków HTTP
Wraz z treścią strony serwer WWW wysyła do przeglądarki nagłówki HTTP. Jednym z nich jest nagłówek Content-Type oznaczający typ treści. Wartością tego nagłówka może być: text/html, text/plain, text/xml czy application/xml. Opcjonalnie obok typu dokumentu dozwolone jest wysłanie standardu kodowania. Poprawny nagłówek wygląda następująco: Content-Type: text/html; charset=utf-8 .

Ustawienie kodowania po stronie serwera uzyskuje się przez dodanie dyrektyw do pliku .htaccess:

  • Dodanie domyślnego kodowania dla plików o wyznaczonych rozszerzeniach otrzymuje się przez dodanie:
    AddCharset UTF-8 .html
  • Dodanie domyślnego kodowania w standardzie ISO 8859-2 dla wszystkich serwowanych dokumentów typu text/plain i text/html:
    AddDefaultCharset iso-8859-2

 

Programista serwisu może ustawić typ kodowania wysyłając nagłówek Content-Type z poziomu języka programowania.

  • W skryptach PHP należy dodać linijkę:
    header('Content-Type: text/html; charset=utf-8');
    Należy pamiętać, żeby nagłówek został wysłany do przeglądarki przed właściwą treścią strony. W przeciwnym wypadku kod nie przyniesie efektu, a parser języka PHP zgłosi ostrzeżenie.
  • W języku Perl:
    print "Content-Type: text/html; charset=utf-8nn";
  • W języku Python:
    print "Content-Type: text/html; charset=utf-8nn"

 

Deklarowanie kodowania w XML
Dokumentom XHTML traktowanym jako XML, kodowanie deklaruje się przez dodanie na początku następującej instrukcji przetwarzania:

<?xml version="1.0" encoding="utf-8"?>

Zastosowanie takiej notacji może być źrodłem problemów. Współczesne przeglądarki internetowe potrafią wyświetlać strony WWW w dwóch trybach, standardowym i tak zwanym quirks. Każdy element strony reprezentowany jest jako prostokąt nazywany blokiem lub pudełkiem (ang. box). Każde pudełko zawiera przestrzeń treści oraz opcjonalnie dopełnienie (ang. padding), obramowanie (ang. border) oraz marginesy zewnętrzne (ang. margin). Różnice między trybem standardowym a "quirks" wynikają z podejścia do określania rozmiarów bloków. Pierwszy do szerokości nie wlicza dopełnienia, obramowania i marginesów w drugim natomiast szerokość elementu jest sumą przestrzeni treści, dopełnienia i obramowania.

Przeglądarka stron WWW decyzje o wyborze trybu podejmuje na podstawie deklaracji DOCTYPE. Niestety Internet Explorer 6 przełączy się zawsze w tryb "quirks" jeśli przed deklaracją pojawi się cokolwiek innego, na przykład prolog XML. Biorąc pod uwagę, że użytkownicy tej przeglądarki stanowią obecnie około 10% internautów należy ostrożnie wykorzystywać deklarację kodowania w prologu XML.

Użycie znacznika <meta>
Dla dokumentów HTML i XHTML rozpoznawanych przez przeglądarkę jako HTML (wysyłanych przez serwer z nagłówkiem Content-Type o wartości text/html) należy zawsze dodawać element <meta> wewnątrz znacznika <head>:

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

Podsumowując. Zawsze deklaruj kodowanie znaków w każdym tworzonym dokumencie. Jeśli tego nie zrobisz jest wysoce prawdopodobne, że twoja treść prezentowana będzie nieprawidłowo. Zapisuj dane w wybranym kodowaniu. Pamiętaj również, że kodowanie wysłane przez serwer w formie nagłówków HTTP ma pierwszeństwo przed deklaracją w treści dokumentu.

kei.pl

Poradę dla Czytelników Dziennika Internautów przygotowała firma Kei.pl dostawca usług hostingowych.


Aktualności | Porady | Gościnnie | Katalog
Bukmacherzy | Sprawdź auto | Praca


Artykuł może w treści zawierać linki partnerów biznesowych
i afiliacyjne, dzięki którym serwis dostarcza darmowe treści.

              *              

Następny artykuł » zamknij

iPhone zakładnikiem



Ostatnie artykuły:

fot. Freepik









Tematy pokrewne:  

tag kodowanie