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.
|