Specificația W3C HTML 4.0 - Prezentarea documentului în format HTML
În acest capitol vom discuta despre modul în care documentele HTML sunt reprezentate pe un computer și Internet.
set de caractere secțiune a documentului se referă la problema simbolurilor abstracte. care pot fi incluse în documentul HTML. Unele dintre aceste caractere sunt litere latine „A“, litera chirilică „I“, caracterul chinezesc pentru „apă“, etc.
Deoarece limbajul uman are un număr foarte mare de caractere și o varietate de metode pentru performanța lor, trebuie avut grijă ca aceste documente pot fi înțelese de către agenții de utilizatori din întreaga lume.
5.1 Setul de caractere al documentului
Pentru a asigura interoperabilitatea, SGML cere ca fiecare aplicatie (inclusiv HTML) specifica setul de caractere al documentului. Documentul include:- Repertoriu. Set de simboluri abstracte,. cum ar fi litera latina „A“, litera chirilică „I“, caracterul chinezesc pentru „apă“, etc.
- Coduri. Un set de referințe întregi la repertoriul de caractere.
Fiecare document SGML (inclusiv fiecare document HTML) - o secvență de caractere din repertoriul. Sistemele de calculatoare identifica fiecare caracter prin codul său; de exemplu, într-un set de coduri ASCII de caractere 65, 66 și 67 denotă caractere 'A', 'B' și 'C', respectiv.
set de caractere ASCII nu este suficient pentru un sistem de informare la nivel mondial, ca Web-ul, astfel încât HTML utilizează un set de caractere mai complet numit set de caractere universal (Set de caractere universal - UCS), și definite în [ISO10646]. Acest standard defineste un repertoriu de mii de caractere utilizate în întreaga lume.
Set de caractere, definit în [ISO10646] - aceasta este orientată caracter echivalent cu Unicode 2.0 ([UNICODE]). Ambele aceste standarde sunt actualizate periodic, actualizat cu noi personaje, modificările ar trebui să fie consultate la serverele Web respective. In aceasta descriere, ISO / IEC-10646 sau Unicode implică acest set același caracter. Cu toate acestea, în caietul de sarcini HTML Unicode este, de asemenea, menționat în discuția de alte probleme, cum ar fi algoritmul de text bidirecțional.
Documentul set de caractere, cu toate acestea, nu este suficient pentru a agentilor utilizator sa interpreteze corect documentele HTML într-un schimb de tipic - codificate ca o secvență de octeți într-un fișier sau în timpul transmisiei prin rețea. Agentii utilizator trebuie să cunoască, de asemenea, codificarea caracterelor. folosit pentru a converti fluxul de caractere al documentului într-un flux de octet.
codificarea caracterelor în această specificație au denumiri diferite în alte specificații (care pot provoca unele confuzii). Cu toate acestea, această noțiune a internetului înseamnă aproximativ același lucru. Același nume - „charset - charset“ - este utilizat în antetele de protocol, atributele și parametrii referindu-se la caracterele și de a folosi aceleași valori din [IANA] registru (pentru lista completă, a se vedea [charsets].).
Parametrul „charset“ identifica o codificare caracter, care este o metodă de conversie unei secvențe de octeți în secvența de caractere. Această conversie se potrivește în mod natural în schema de activitate Web: serverele trimit documente HTML pentru agentii utilizator ca un flux de octeți; agentii utilizator le interpretează ca o secvență de caractere. metode de transformare poate varia de la unul simplu la una corespondență cu scheme de comutare sofisticate sau algoritmi.
tehnică de codificare simplă „un octet - un caracter“ insuficient pentru șiruri de text cu un astfel de repertoriu larg de caractere ca [ISO10646]. codări De asemenea, întregul set de caractere (de exemplu, UCS-4), există câteva alte părți ale codificării [ISO10646].
Servere și proxy-uri se pot schimba codificarea caracterelor (numit transcodare) pe zbor pentru a efectua agentii utilizator cerere (vezi. Secțiunea 14.2 [RFC2068]. Cererea antet HTTP „Accept-Charset“). Servere și proxy-uri nu trebuie să servească codificarea documentului, inclusiv întregul set de caractere al documentului.
Web criptare utilizat pe scară largă - ISO-8859-1 (denumită în continuare "Latin-1", folosit pentru majoritatea limbilor din Europa de Vest), ISO-8859-5 (cu suport chirilică), SHIFT_JIS (codificare japoneza), EUC-JP (un alt codare japoneză) și UTF-8 (ISO 10646 care codifică o variantă utilizând un număr diferit de octeți pentru caractere diferite). Nume de codificări de caractere sunt sensibile la majuscule, astfel încât, de exemplu, „Shift_JIS“, „Shift_JIS“, și „Shift_JIS“ sunt echivalente.
Această specificație nu specifică ce codificare a caracterelor ar trebui să susțină un agent utilizator.
Agentii utilizator trebuie conforme afișeze corect la Unicode toate caracterele din orice codificare, ei pot recunoaște.
Note privind codificări specifice
Când textul HTML este transmis în UTF-16 (charset = UTF-16), datele de text ar trebui să fie transmise în ordine octet de rețea ( "big-endian", de mare ordine octet - primul), în conformitate cu [ISO10646]. Secțiunea 6.3 și [UNICODE]. poziția C3, pagina 3-1.
Mai mult decât atât, pentru a crește probabilitatea de interpretare corectă, se recomandă să transmită la UTF-16, începând întotdeauna cu caracterul non-rupere spațiile de lățime zero (codul feff hexazecimal, de asemenea, numit Mark de ordine octet (Byte Order Mark - BOM)), care este de manipulare bytes devine hex FFFE niciodată atribuit simbolul. Astfel, agentul utilizator primește FFFE codul hexazecimal ca primii octeți ai textului va fi conștient de faptul că restul textului, bytes trebuie să fie inversată.
Nu utilizați UTF-1 [ISO10646] Formatul de transformare (IANA înregistrată ca ISO10646-UTF-1). Pentru informații despre ISO 8859-8 si algoritmul bidirectional, a se vedea. Secțiunea bidirectionalitatii și codificarea caracterelor.
Serverul determină care codificarea caracterelor utilizate în document? Unele servere examinează primii octeti ai documentului, sau verificat împotriva unei baze de date a fișierelor cunoscute și codificări. Multe servere Web moderne oferă administratorilor cu mai multe capacități de gestionare de configurare ale setului de caractere decat vechile servere. administratorii de server web ar trebui să utilizeze aceste mecanisme pentru a trimite parametru dacă este posibil „charset“, dar trebuie să aibă grijă să nu pentru a seta „charset“ valoarea parametrului pentru documentele eronate.
Ca un agent utilizator știe care codificare caracter a fost folosit? Aceste informații sunt furnizate de către server. Cel mai bun mod de a informa agentul utilizator despre codificarea caracterelor documentului - folosiți parametrul „charset“ în câmpul antet „Content-Type“ protocol HTTP (. [RFC2068] Secțiunile 3.4 și 14.18) De exemplu, antet HTTP anunță următoarea, care utilizează codificarea EUC-JP:
Protocolul HTTP ([RFC2068]. Secțiunea 3.7.1) consideră că ISO-8859-1 codificarea caracterelor implicit, dacă parametrul "charset" în câmpul antet "Content-Type" lipsește. În practică, această recomandare este inutil, deoarece unele servere nu vă permit să trimiteți parametrul „charset“, iar unele nu poate fi configurat pentru a trimite acest articol. Prin urmare, agentii utilizator nu trebuie să-și asume nici o importanță parametru „charset“.
Pentru a specifica server sau de configurare limitări ale documentelor HTML pot include informații explicite despre codificarea caracterelor documentului; pentru a furniza astfel de informații pot fi utilizate de agentii utilizator elementului META.
În plus față de această listă de priorități, agentul utilizator poate utiliza euristica și setările de utilizator de configurare. De exemplu, multi agenti utilizator folosesc o metodă euristică pentru a distinge diferite codificări utilizate pentru japoneză. Agentii utilizator au de obicei un implicit definit de utilizator de codificare locale pe care le folosesc, în cazul în care nu există nici un indiciu de codificare.
Notă. În cazul în care, în unele aplicații trebuie să utilizați caractere care nu sunt incluse în codificarea [ISO10646]. aceste simboluri trebuie să se atribuie o zonă cu caracter personal pentru a se evita conflictele cu versiunile prezente sau viitoare ale standardului. Cu toate acestea, nu este recomandat din motive de portabilitate.
referinte caracter in HTML pot lua două forme:- referințe de caractere numerice (zecimale sau hexazecimale).
- Referirile la combinații de simboluri.
Notă. HTML furnizează alte moduri de a prezenta un caracter, în special imagini inline.
Notă. În SGML, nu puteți utiliza caracterul definitiv, în unele cazuri „;“ după simbolurile de referință (de exemplu, simbolul line feed imediat înainte sau tag). În alte circumstanțe, ele nu pot fi îndepărtate (de exemplu, în mijlocul unui cuvânt). Ne propunem utilizarea „;“ evita întotdeauna probleme cu agentii utilizator pentru care acest simbol este obligatoriu.
5.3.1 Referințele de caractere numerice
referințe de caractere numerice specifica codul caracterului în setul de caractere al documentului. referinte caracter numerice pot lua, de asemenea, două forme:- Sintaxa „#D;“, unde D - număr zecimal indică numărul de caractere Unicode zecimal D.
- Sintaxa "#xH;" sau „#XH;“, unde H - numere hexazecimale indică Unicode numărul de caractere hexazecimal H. hexazecimale referințe numerice sensibile.
Iată câteva exemple de referințe de caractere numerice:
- # 229; (Zecimal) reprezintă litera „a“ cu un mic cerc deasupra (utilizat, de exemplu, în norvegiană).
- # XE5; (Hexadecimal) reprezintă același caracter.
- # Xe5; (Hexadecimal) reprezintă același caracter.
- # 1048; (Zecimal) reprezintă litera de capital chirilică „I“.
- # X6C34; (Hexadecimal) reprezintă caracterul chinezesc pentru „apă“.
Notă. Deși reprezentarea hexazecimal nu este specificat în [ISO8879]. este de așteptat în noua versiune, așa cum este descris în [WEBSGML]. Acest acord este deosebit de util ca standarde de simboluri folosesc în general reprezentări hexazecimal.
5.3.2 Combinații de referințe la caractere
HTML 4.0 nu definește o referință entitate caracter pentru fiecare caracter. De exemplu, pentru litera chirilică „I“ nu există nici o referință la o entitate caracter. Cm. Lista completa de referinte de caractere definite în HTML 4.0.
Combinații de referințe de caractere sunt sensibile la majuscule. De exemplu, Å indică un alt simbol (un cerc cu majuscule) în loc de å (Un cerc cu litere mici).
Patru legături trebuie să fie menționate în special, deoarece acestea sunt adesea folosite pentru a indica caractere speciale:- "Lt;" este un semn <.
- "Gt;" Acesta reprezintă semnul>.
- „-“ reprezintă un caracter .
- „“ Reprezintă „marca.
Posibil, agentul utilizator nu poate afișa toate caracterele din document, de exemplu, din cauza lipsei de text corespunzătoare sau în cazul în care caracterul are o valoare care nu poate fi exprimată în agentul interior utilizator codificata etc.