Afișarea documentului html

În acest capitol, vom discuta despre modul în care documentele HTML sunt afișate pe computer și pe Internet.

Pagina de cod a documentului descrie modul în care simbolurile abstracte pot face parte dintr-un document HTML. Simbolurile includ literele alfabetului latin, alfabetul chirilic, simbolurile chinezești "watermarks" etc.







Deoarece există multe simboluri în limbile diferitelor popoare și o mare varietate de moduri de a reprezenta aceste personaje, aveți nevoie de o abordare specială pentru a face documentele disponibile pentru citire în orice browser de oriunde în lume.

5.1 Pagina de cod a documentului

Pentru a îmbunătăți interacțiunea, SGML cere ca fiecare aplicație (inclusiv aplicația HTML) să specifice propriul set de simboluri. Setul de caractere (pagina de cod) cuprinde:

  • „Repertoriu“. un set de simboluri abstracte, cum ar fi litera latină "A", scrisoarea rusă "I", filigranele chinezești etc.
  • Poziția simbolului. un set de referințe digitale la simbolurile din "repertoriu".

Fiecare document SGML (inclusiv fiecare document HTML) este o secvență de caractere din "repertoriu". Sistemul de operare al computerului identifică fiecare simbol prin poziția sa de cod. De exemplu, în setul de caractere ASCII, pozițiile codului 65, 66 și 67 se referă la simbolurile "A", "B" și, respectiv, "C".

Setul de caractere ASCII este insuficient pentru sistemele de informații la nivel mondial, cum ar fi Web, astfel încât HTML utilizează un set complet de caractere numit set de caractere universal (UCS) / universal Set de caractere, definit în documentul [ISO10646]. Acest standard definește repertoriul a mii de seturi de caractere folosite în întreaga lume.

Setul de caractere definit în [ISO10646]. acesta este caracterul echivalent Unicode ([UNICODE]). Ambele standarde sunt completate din când în când cu noi simboluri, iar aceste modificări trebuie să fie consultate în mod constant pe site-urile relevante. În specificația curentă, ISO10646 este utilizat pentru a defini un set de caractere, în timp ce UNICODE este rezervat pentru referințe la un algoritm de text bidirecțional.

Totuși, un set de caractere nu este suficient pentru ca browserele utilizatorului să interpreteze corect documentele HTML, deoarece acestea sunt de obicei codate ca o secvență de octeți în fișier în timpul transmisiei prin rețea. Browserul utilizatorului trebuie, de asemenea, să "cunoască" codificarea specifică. Acest lucru este folosit pentru a transforma un document într-un flux de octeți.


5.2 Pagini de cod

Ce se numește codificare de caractere în această specificație. Este cunoscut sub diverse denumiri în alte specificații (care uneori pot fi confundate). Cu toate acestea, o înțelegere comună este una pe întregul internet.
Protocoale Pozițiile (anteturi de protocol), atribute, și parametri referitori la simbolurile de codare folosind un termen - „charset“ și aceleași valori din registrul [IANA] (a se vedea lista din [charsets]).

Parametrul "caractere" identifică codificarea caracterelor, care este o metodă pentru conversia unei secvențe de octeți într-o secvență de caractere. Această conversie corespunde, prin natura sa, schemei de activități web: serverele trimit documente HTML în browserele utilizatorilor ca pe un flux de octeți, în timp ce browserele utilizatorilor o interpretează într-o secvență de caractere.
Metodele de conversie variază de la simple scheme de comutare și algoritmi de la unul la altul.

O tehnică de codificare simplă, cu un singur octet, nu este suficientă pentru a utiliza caractere care nu sunt incluse în "repertoriul" [ISO10646]. Există mai multe codificări diferite, începând cu codificări parțiale folosind [ISO10646]. și până la codificarea întregului set de caractere (ca UCS-4).

Servere si servere proxy pot schimba codificarea caracterelor (numite transcodare) „pe drumul cel bun“ pentru a accepta cererea browserul utilizatorului (a se vedea secțiunea 14.2 în [RFC2616]. Cerere antet „Accept-Charset“ HTTP). Serverele și proxy-urile nu trebuie să servească documentul în codificarea care acoperă întregul set de caractere al acestui document.

De obicei, Web-ul utilizează codificare: ISO-8859-1 (de asemenea, cunoscut sub numele de "Latin-1" este folosit pentru majoritatea limbilor din Europa de Vest), ISO-8859-5 (chirilic), SHIFT_JIS (codificare japoneza), EUC-JP (un alt japonez codare) și UTF-8 (codarea ISO 10646, folosind un număr diferit de octeți pentru caractere diferite). Numele codificărilor sunt insensibile pentru litere mici. Astfel, "SHIFT_JIS", "Shift_JIS" și "shift_jis" sunt echivalente.







Această specificație nu prescrie codurile de browser care ar trebui să fie acceptate.

Respectarea browserului. Browserele trebuie să răspundă unui afișaj, în conformitate cu ISO 10646, a tuturor caracterelor din orice codificare pe care le recunosc (sau ar trebui să acționeze ca și când le-ar recunoaște).

Note privind codificarea specială

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", cel mai semnificativ octet - primul), în conformitate cu [ISO10646]. secțiunea 6.3 și [UNICODE]. C3, pagina 3-1.

Mai mult decât atât, în scopul de a crește șansele de interpretare corectă a documentului, se recomandă ca documentul transmis ca UTF-16, începe întotdeauna simbolul ZERO-Width NON-breaking SPACE (feff hexazecimal, de asemenea, numit Byte Order Mark (BOM)), care atunci când Permutarea octeților devine FFFE, un simbol care asigură că nu va fi niciodată setat. Astfel, browserul utilizatorului, care a primit FFFE ca primul octet al textului, va putea determina că acest octet este rezervat pentru memento-ul codificării UTF-16.

Formatul de conversie UTF-1 [ISO10646] (înregistrat de IANA ca ISO-10646-UTF-1) nu trebuie utilizat.
Pentru ISO 8859-8 și algoritmul bidirecțional, consultați secțiunea privind bidirecționalitatea și codificarea caracterelor.

Cum determină serverul codificarea documentului? Unele servere verifică primele câteva octeți ale documentului sau verifică informațiile din baza de date despre fișiere și codificări cunoscute. Multe servere moderne oferă Webmasterului mai mult control asupra configurației seturilor de caractere. Webmasterii ar trebui să folosească aceste mecanisme pentru a transmite informațiile "charset" ori de câte ori este posibil și pentru a nu denota documentul cu o valoare incorectă pentru parametrul "charset".

Cum recunoaște browserul utilizatorului codificarea documentului?
Aceste informații ar trebui furnizate de server. Modul direct este de a utiliza parametrul "charset" al câmpului de antet "Content-Type" al protocolului HTTP ([RFC2616] secțiunile 3.4 și 14.17). De exemplu, următorul antet HTTP declară codificarea EUC-JP:

Protocolul HTTP ([RFC2616], secțiunea 3.7.1) menționează codul ISO-8859-1 ca fiind implicit în absența parametrului "charset" în câmpul "Content-Type". În practică, această recomandare este inutilă, deoarece unele servere nu transmit parametrul "charset", iar altele nu pot fi configurate să trimită parametrul. Astfel, este posibil ca browserul să nu obțină implicit valoarea parametrului "charset".

Pe scurt, browserele care îndeplinesc cerințele trebuie să respecte următoarele priorități atunci când determină codarea documentului (de la cea mai mare prioritate la cel mai mic):

În plus față de această listă de priorități, browserul poate utiliza euristica și setările personalizate. De exemplu, multe browsere folosesc euristica pentru a distinge codificările textului japonez. De asemenea, browserele utilizează, de obicei, codificări locale implicite, definite de utilizator, care sunt utilizate atunci când nu există alte indicii.

Notă. Dacă o anumită aplicație trebuie să se refere la un set de caractere în afara [ISO10646]. simbolurile ar trebui să fie alocate unei zone separate (zonă privată) pentru a exclude conflictele cu viitoarele versiuni ale standardului. Cu toate acestea, acest lucru nu este foarte recomandat din motive de portabilitate.


5.3 Mnemonici (simboluri prin referință, prin pseudonim)

Referințele la simbol (mnemonica) pot fi de două tipuri:

  • Monitoare digitale (zecimal sau hexazecimal).
  • Mnemonica elementelor simbolice.

Notă. HTML oferă alte posibilități de reprezentare a datelor de caractere, în special - imagini încorporate \ imagini inline.

5.3.1 Mnemonics digitale

Referințele simbolice digitale la simboluri definesc poziția codului unui caracter din setul de caractere al documentului. Mnemonicurile digitale sunt de două tipuri:

  • "#D;", unde D. este un număr zecimal, se referă la valoarea zecimală D a simbolului ISO 10646.
  • "#xH;" sau "#XH;" unde H. este un număr hexazecimal, se referă la valoarea hexazecimală a caracterului H al ISO 10646. Numerele hexazecimale din mnemonica digitală sunt insensibile pentru litere mici.

Iată câteva exemple de mnemonice digitale:

  • # 229; (A zecea) reprezintă litera "a" cu un cerc mic de sus (folosit, de exemplu, în Norvegia);
  • # xE5; (A 16-a) este aceeași literă;
  • # Xe5; (A 16-a) este aceeași;
  • # 1048; (A zecea) rubrică "I";
  • # x6C34; (16) simbol chinezesc "filigran".

Notă. Deși a 16-a reprezentare nu este definită în [ISO8879]. acest lucru este așteptat în revizuire, așa cum este descris în [WEBSGML]. Acest acord este deosebit de relevant, atât timp cât standardele de caractere utilizează cea de-a 16-a reprezentare.

5.3.2 Referințele caracterului mnemonic (prin pseudonim)

Mnemonicurile simbolice sunt sensibile la litere mici. De exemplu, Å se referă la o altă literă (A cu un cerc în majusculă), mai degrabă decât å (și cu un cerc în registrul inferior).

Patru caractere mnemonice ar trebui să fie menționate separat, deoarece acestea sunt adesea folosite în anumite secvențe de evacuare:

Este posibil ca browserul să nu afișeze corect toate caracterele din document. De exemplu, dacă un utilizator nu are un font corespunzător, caracterul are o valoare care nu se află în codarea internă a browserului etc.

  1. Creați un mecanism clar, dar discret, pentru a le spune utilizatorului despre resursa lipsă.
  2. Dacă simbolurile lipsă sunt reprezentate de numere, utilizați formulare pe 16 biți (nu zecimale), atâta timp cât aceste formulare sunt în standarde.






Articole similare

Trimiteți-le prietenilor: