Reprezentarea documentelor HTML
Ca aplicatie (standard) SGML, limbajul HTML trebuie (pentru a se supune normelor de interoperabilitate) sa specifice propriul set de caractere care se foloseste în codificarea document 212e46c elor.
Un set de caractere al unui document consta din:
un repertoar: un set de caractere abstracte, cum sînt litera alfabetului latin "A", litera alfabetului chirilic "I" sau semnul chinezesc care înseamna apa
pozitiile codurilor: un set de întregi ce refera caracterele din repertoar
Fiecare document HTML este o secventa de caractere din repertoar. Computerele identifica aceste caractere prin pozitia acestora în repertoar. De exemplu în setul de caractere ASCII pozitiile 65, 66 si 67 refera caracterele A, B si C.
Caracterele utilizate pentru editarea textelor în documentele HTML ar trebui sa apartina setului standard ASCII (caractere pe 7 biti) si fara a include caractere din setul extins (pe 8 biti) deoarece diversele platforme utilizeaza definitii diferite pentru caracterele din setul superior ASCII. Dar, acest set de caractere este insuficient pentru un sistem informational global, asa cum este Webul. De aceea limbajul HTML utilizeaza un set de caractere mult mai comple, numit Universal Character Set - UCS (Setul de caractere universal) definit de standardul ISO 10646, standard ce defineste un repertoar de mii de caractere utilizate în întreaga lume. Acest set de caractere este echivalent caracter-cu-caracter cu setul Unicode 2.0 definit de W3C.
Acest set de caractere nu este însa suficient pentru agentii utilizator ca sa interpreteze corect un document HTML transmis ca o secventa de bytes într-un fisier sau în retea. În afara setului de caractere, acestia trebuie sa cunoasca si codificarea caracterelor (character encoding) folosita la transformarea documentului într-un stream de bytes. Prin codificarea caracterelor (termenul utilizat fiind acela de "charset") se poate întelege metoda de conversie a unei secvente de bytes într-o secventa de caractere. Aceasta conversie se potriveste perfect cu schema activitatilor Webului: serverele trimit documentele utilizatorilor (agentilor utilizatori) ca un stream (sir) de bytes, iar acestia îi interpreteaza ca siruri de caractere. Metoda de conversie poate sa merga de la o corespondenta simpla unu-la-unu pîna la scheme si algoritmi complexe. O singura corespondenta simpla unu-la-unu nu este însa suficienta pentru un repertoar asa de complex ca cel definit de ISO 10646 (sau de Unicode). De aceea exista diferite codificari ale unor parti ale acestui repertoar pentru a-l acoperi în întregime. Cele mai uzuale codificari sînt: ISO-8859-1/ISO Latin 1 (utilizat pentru limbile Europei de vest), ISO-8859-2/ISO Latin 2 (care suporta alfabetul chirilic), SHIFT_JIS (codificare japoneza), s.a.
Uneltele software care produc documente HTML le pot codifica oricum (nu se impune nimic) încercînd sa "acopere" cît mai multe dintre caracterele acestuia. Cele care nu se pot codifica cu schema folosita se pot totusi referi prin intermediul caracterelor entitati (acestea referindu-se la setul de caractere si nu la schema de codificare). Cel care foloseste aceste documente (agentii utilizatori) poate modifica aceasta codificare (proces numit transcodare) si nu este obligat sa proceseze documentul utilizînd aceeasi codificare sau o codificare care sa acopere întregul set de caractere. DAR, pentru a obtine aceleasi rezultate cu cele dorite de autorul documentului, agentii utilizatori trebuie sa fie în primul rînd "conformi Unicode" (adica sa mapeze corect toate caracterele Unicode în toate codificarile recunoscute) si sa cunoasca schema de codificare folosita de autor.
Informatia care specifica schema de codificare trebuie sa fie oferita de server. Cea mai simpla si directa modalitate de a o specifica este utilizarea unui parametru specific (charset) într-un cîmp (Content-type) al antetului protocolului HTTP utilizat la transmiterea documentelor.
De exemplu, urmatorul antet HTTP anunta ca pentru documentul solicitat s-a folosit schema de codificare EUC-JP:
Content-Type: text/html; charset=EUC-JP
Dar nu toate serverele stiu sa
foloseasca acest parametru. Pentru a fixa aceasta problema,
documentele HTML pot include informatii explicite despre schema de
codificare folosita. Pentru aceasta se foloseste un
element specific al limbajului (
<
Mai mult, daca nu se foloseste nici aceasta metoda, limbajul HTML a prevazut un atribut special (charset) ce se poate atasa elementelor din cadrul documentului.
Implicit, daca nu este folosita nici una dintre aceste 3 posibilitati, se considera documentul codificat ISO-8859-1. Fiecare agent utilizator trebuie sa ofere o metoda/mecanism de a suprapune/suprascrie o informatie incorecta despre charsetul (codificarea) folosita.
|