Cheia de acces n sare lanagigarea in pagina. Sari la inceputul continutului.

Acest document e o traducere. In caz ca apare vreo eroare sau discrepanta, ultima versiune in Engleza este cea autoritativa. Copyright-ul original apartine W3C, dupa cum e aratat mai jos.

Traducator: George Misel, Traduceri autorizate

s_gotoW3cHome Internationalizare
 

Codarea caracterelor: Concepte esențiale

Cititorii vizati: Programatorilor XHTML/HTML (care folosesc editoare sau scripting), dezvoltatorilor software(PHP, JSP, etc.), programatorilor CSS, și tuturor celor care sunt începatori în ceea ce priveste terminologia codării caracterelor și vor să înteleagă conceptele de bază.

Acest articol introduce o serie de concepte de bază necesare întelegerii altor articole care au legatură directă cu caracterele și codarea acestora.

Unicode

Unicode este un set universal de caractere,un standard care definește, la un loc, toate caracterele necesare pentru scrierea majorității limbajelor folosite pe calculatoare. Se dorește a fii, și deja în mare parte este, un super set al tuturor caracterelor care au fost codate.

Textul dintr-un calculator sau de pe Web este compus din caractere. Caracterele reprezintă literele alfabetului, punctuația, sau alte simboluri.

În trecut, diverse organizații au alăturat diverse seturi de caractere și au creat coduri pentru ele – un set ar putea acoperi doar limbajele Vest-Europene bazate pe limba latina (cu excepția tărilor Europene ca Bulgaria ori Grecia), altul ar putea acoperi o limbă specifică din Estul Indepartat (cum ar fi Japoneza), altele ar putea fi unele din multele seturi împarțite pe loc pentru a reprezenta alte limbaje undeva in lume.

Din păcate, nu poți garanta că aplicația ta va suporta toate codările, nici faptul că o anumită codare va suporta toate necesitațile de a reprezenta un anumit limbaj. În plus, de obicei este imposibil să combini diferite codări pe aceași pagină Web sau într-o bază de date, deci este foarte dificil să oferi suport pentru mai multe limbi folosind abordarea de "moștenire" a codării.

Consorțiul Unicode oferă un set mare de caractere simple, scopul fiind de a include toate caracterele necesare pentru orice sistem de scriere din lume, inclusiv scrieri antice(cum ar fi Cuneiform, Gotic si Hieroglife egiptene). În acest moment este esențial pentru arhitectura Web și pentru sistemele de operare, și este suportat de toate browserele și aplicațiile importante. Standardul Unicode descrie de asemenea proprietăți și algoritmi pentru lucrul cu caractere.

Această abordare face mai ușor lucrul cu paginile sau sistemele miltilingve, și oferă o acoperire a necesităților tale mai mare decât majoritatea sistemelor de codare.

Următoarea imagine arată blocuri de script Unicode de la versiunea Unicode 5.2:

Blocuri Unicode

Se spune că primele 65,536 de poziții de puncte de cod din setul de caractere Unicode constituie Planul Multilingv de Bază(Basic Multilingual Plane (BMP)). BMP include majoritatea caracterelor cele mai uzuale.

Numărul 65,536 este 2 la putearea 16. Cu alte cuvinte, numărul maxim de permutari de biți pe care le poți obține în doi bytes.

Setul de caractere Unicode conține de asemenea loc pentru un milion de poziții de puncte de cod adiționale. Caracterele din această gama sunt cunoscute ca și caractere suplimentare.

Ilustrarea celor 17 planuri din setul de coduri Unicode.

Pentru mai multe informații despre Unicode, accesează Pagina Principală Unicode, sau citește tutorialul O Introducere în Scrierea Sistemelor și Unicode.

Seturi de caractere, seturi codate de caractere, și codari

Este important să distingem clar între conceptul de set de caractere și codarea caracterelor.

Un set de caractere sau repertoriu cuprinde setul de caractere pe care cineva le-ar putea folosii intr-un scop specific – fie cele necesare pentru a suporta limbajele Vest Europene pe calculatoare, fie cele pe care un copil chinez le va invăța la scoala în clasa a treia(nu au nicio legatură cu calculatoarele).

Un set de caractere codate este un set de caractere pentru care un număr unic a fost repartizat fiecarui caracter. Unitățile unui set de caractere codate sunt cunoscute ca puncte de cod. Valoarea unui punct de cod reprezintă poziția unui caracter în setul de caractere codate. De exemplu, punctul de cod pentru litera à în setul de caractere codate Unicode este 225 în decimal, sau E1 în hexadecimal. (Observați că notația hexadecimală este utilizată frecvent în referinta punctelor de cod, și va fi folosită și aici.)

Seturile de caractere codate sunt denumite uneori pagini codate.

Codarea caracterelor reflectă felul in care setul de caractere codate este organizat în bytes pentru manipularea într-un calculator. Imaginea de mai jos arată cum caracterele și punctele de cod în codul Tifinagh (Berber) sunt organizate pe secvențe de bytes în memorie folosind codarea UTF-8. Valorile punctelor de cod pentru fiecare caracter sunt listate imediat sub reprezentare( reprezentarea vizuală) pentru caracterul din partea de sus a diagramei. Săgețile arată cum acestea sunt organizate pe secvențe de bytes, unde fiecare byte este reprezentat de un numar hexazecimal format din două caractere. Observați că punctele de cod Tifinagh se definesc pe trei bytes, dar semnul exclamării se definește pe un singur byte.

Imagine despre cum se organizeaza caracterele in bytes.

Această explicație atrage atenția asupra unei nomenclaturi detaliate care are legatură cu codarea. Mai multe detalii pot fi găsite în Raportul Tehnic Unicode #17.

Un set de caractere, multiple codări. Multe standarde de caractere codate, cum ar fi seriile ISO 8859, folosesc un singur byte pentru un caracter iar codarea este o organizare simplă pe poziția scalară a caracterului în setul de caractere codate. De exemplu, litera A în setul de caractere codate ISO 8859-1 este poziția caracterului cu numărul 65(începand de la 0), și este codat pentru reprezentarea în calculator folosind un byte cu valoarea 65. Pentru ISO 8859-1 acest lucru nu se schimbă niciodată.

Pentru Unicode, totuși, lucrurile nu sunt atât de simple. Chiar dacă punctul de cod pentru litera à în setul de caractere Unicode este mereu 225 (în decimal), în UTF-8 el este reprezentat în computer de doi bytes. Cu alte cuvinte nu este o banală organizare unu la unu între setul de caractere codate și valoarea codată pentru acest caracter.

În plus, în Unicode există mai multe feluri de a coda același caracter. De exemplu, litera à poate fi reprezentată de doi bytes în unul și din patru bytes în altul. Formele de codare care pot fi folosite cu Unicode sunt denumite UTF-8, UTF-16, și UTF-32.

Imagine despre cum se organizează caracterele în bytes.

UTF-8 folosește 1 byte pentru a reprezenta caractere în setul ASCII, doi bytes pentru caractere în mai multe blocuri alfabetice, și trei bytes pentru restul BMP. Caracterele suplimentare folosesc 4 bytes.

UTF-16 folosește 2 bytes pentru orice caracter în BMP, și 4 bytes pentru caracterele suplimentare.

UTF-32 folosește 4 bytes pentru toate caracterele.

În urmatoarea diagramă, prima linie de numere reprezintă poziția unui caracter în setul de caractere Unicode. Celelalte linii arată valoarea bytes-ilor folosiți pentru a reprezenta acel caracter într-o codare de caracter specifică.

Latin A. Hebrew alef. ideografic Han AN. Ideografic chinezesc care inseamnă 'ciot de ramificație'.
Punct de cod U+0041 U+05D0 U+597D U+233B4
UTF-8 41 D7 90 E5 A5 BD F0 A3 8E B4
UTF-16 00 41 05 D0 59 7D D8 4C DF B4
UTF-32 00 00 00 41 00 00 05 D0 00 00 59 7D 00 02 33 B4

Pentru mai multe informații despre caractere și codări mergeți la Introducere în Seturi de Caractere și Codări, sau citiți tutorialul Folosirea codărilor de caractere în HTML și CSS .

Setul de Caractere Ale Documentului

Pentru XML și HTML (începând cu versiunea 4.0) setul de caractere ale documentului este definit ca fiind Setul Universal de Caractere(Universal Character Set (UCS)) așa cum este definit atât de standardele ISO/IEC 10646 cat și de Unicode. (Pentru simplitate și pentru o practica cât mai simpla, ne vom referi aici la UCS ca Unicode.)

Asta inseamnă că modelul logic care descrie cum sunt procesate XML și HTML este descris ca și set de caractere definit de Unicode. (În termeni practici, asta inseamnă că browserele convertesc în interior tot textul în Unicode.)

Observați că aceasta nu inseamnă că toate documentele HTML și XML trebuie sa folosească codarea Unicode! Inseamnă că, acel document poate conține doar elemente definite de Unicode. Orice codare poate fi folosită pentru documentul tău atâta timp cât este declarată corespunzător și reprezintă un subset al unui repertoriu Unicode.

Pentru mai multe informații despre setul de caractere ale documentului citiți articolul Set de Caractere pentru Document.

Alternative la caractere

O alternativă la caractere reprezintă o cale de a reprezenta un caracter fără a folosi caracterul în sine.

De exemplu, nu există o cale de a reprezenta direct caracterul ebraic א în document dacă folosiți codarea ISO 8859-1(care acoperă limbajele Vest Europene). O cale de a indica faptul că vrei să incluzi acel caracter în HTML este acela de a folosi ca alternativă א. Deoarece setul de caractere este Unicode, utilizatorul ar trebui să recunoască că acesta reprezintă caracterul ebraic aleph.

Exemple de alternative în HTML / XHTML și CSS, și sfaturi referitoare pentru când și cum să le folosim pot fi gasite în aticolul Folosirea alternativelor în marcare și CSS.

Antetul HTTP

Când cereți un document de la un server, serverul trimite în mod normal niște informații în plus alături de document. Acestea se cheamă antet HTTP. Aici este un exemplu de tip de informație despre document care este returnată de antetul HTTP cu un document în drumul său de la server la client.

A doua linie de jos în sus din acest exemplu oferă informații despre codarea caracterelor din document.

HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Language: en

Dacă documentul este creat dinamic folosind limbaje de scripting, poți adăuga această informație în mod explicit în antetul HTTP. Dacă oferi fișiere statice, serverul poate asocia această informație cu aceste fișiere. Modul de a seta serverul ca să ofere informații despre codarea caracterelor în acest mod va varia de la server la server. Ar trebui să luați legatura cu administratorul serverului.

Ca și exemplu, serverele Apache ofera o codare implicită a caracterelor, care poate fi de obicei suprascrisă de setări specifice directoarelor. De exemplu, un webmaster poate adăuga urmatoarea linie la un fișier .htaccess pentru a returna toate fisierele cu extensia .html ca și UTF-8 în acest director cât și în directoarele pe care le conține:

AddType 'text/html; charset=UTF-8' html

Pentru mai multe informații despre schimbarea codării în antetul HTTP, vedeți Setarea parametrilor caracterelor HTTP

Altele

Vedeti Redarea HTML & XHTML pentru informații despre concepte asociate , inclusiv Tipuri MIME, standarde vs moduri capricioase, și DOCTYPEs.

Spune-ne părerea ta (în Engleză).

Abonează-te la RSS feed.

Resurse noi

Noutăţi prima pagină

Twitter (Noutăţi prima pagină)

‎@webi18n

Alte materiale

Autor: Richard Ishida, W3C. Traducator: George Misel, Traduceri autorizate.

XHTML 1.0 Valid!
CSS Valid!
Incodat cu UTF-8!

Tradus din engleza: 2010-08-20. Ultima modificare a traducerii: 2014-01-17 13:51 GMT

Pentru a vedea toate schimbarile documentului, cauta article-definitions-characters pe blogul i18n.