Rostislav Chebykin

Pentru detalii tehnice, puteți consulta RFC 3629 (STD 63) și standardul Unicode (paragraful 3.9). Și aici vorbim despre aspectul practic al utilizării UTF-8.

Uită-te la "Tabela de simboluri" de pe computer. În codarea UTF-8, puteți lua orice simbol direct din acest tabel și îl puteți lipi direct în document. Dacă aveți nevoie de un drept de autor, de diplomă sau de semn integrat - nu este nevoie să căutați un font special, să reprezenta acest caracter într-un format grafic sau să inventați mai multe trucuri. În codificarea UTF-8, orice caracter, fie ea fracție ⅓ sau caracter chinezesc, poate fi folosit în document în același mod ca și litera latină "A", rusă "Y" sau semnul "+".

Odată, dezvoltatorii de pagini web au fost forțați să utilizeze astfel de substituții greoaie, deoarece codificarea UTF-8 nu exista încă. Dar acum puteți uita atât despre substituire, cât și despre vechile codificări.

Având în vedere avantajele UTF-8, ar fi util să vorbim despre dezavantajele acestei codificări. Imaginați-vă că nu. Există doar mituri și legende, precum și zvonuri și presupuneri răspândite de conservatorii mușcați-mâncați și de retrogradările terry. Cu mulți ani în urmă, au avut loc unele neajunsuri, dar acum s-au scufundat în uitare.


Browser-urile suportă rău UTF-8?

Se spune că unii utilizatori au în continuare browsere vechi care nu pot afișa pagini în UTF-8. Aceasta este o prostie totală. Chiar și Internet Explorer 4 și Netscape 4, pe care nimeni nu le-a folosit de foarte mult timp, înțeleg perfect UTF-8. Și mai multe browsere moderne - și chiar mai mult.

UTF-8 nu este deloc "codificat" sau "tânăr", acesta a fost folosit cu succes de mai bine de zece ani. Dacă un dezvoltator a aflat recent sau nu știe până acum - aceasta este o lipsă a calificărilor sale, și nu codificarea.


Are UTF-8 probleme pe serverul web?

"Am pus o pagină în UTF-8 pe server și este afișată cu krakozyabrami", așa că uneori începătorii se plâng. De fapt, această problemă se întâmplă cu codificări foarte diferite și nu este asociată cu niciun caracter specific al UTF-8. Aici, problema este că pagina este făcută în aceeași codificare, iar serverul din antetele HTTP îi spune altui. Este necesar să se aducă setările serverului în conformitate cu codificarea actuală a paginilor web. Repet că acest lucru ar trebui făcut cu orice codificare.


Fișierele din UTF-8 ocupă mult spațiu?

Se spune că documentele din UTF-8 devin de două ori mai mari decât în ​​vechile codificări. Acesta este un mit din categoria "Am auzit sunetul, dar nu știu unde este." De fapt - doar o singură dată nu este necesar. De exemplu, dacă documentul conține doar caractere ASCII (litere latine, numere, punctuație etc.), atunci în codarea UTF-8 va ocupa exact același număr de octeți ca și în oricare alta. Dacă documentul conține numai litere din alfabetul rus și nici alte caractere (pe care le veți fi de acord, este destul de rar) - atunci în UTF-8 va deveni într-adevăr de două ori mai mare. Și dacă în ea, de exemplu, scrisori rusești și arabe - în UTF-8 va fi de două ori mai mică decât, de exemplu, în Windows-1251 sau Asmo-708.

Chiar pagina pe care o citiți în prezent, codificată în UTF-8, ocupă 35 kilobytes. Și dacă îl traduceți, de exemplu, în Windows-1251, acesta va ocupa 26 kilobytes (vezi pentru tine). Apropo, atunci când comparați paginile, uitați-vă cât de ușor este să citiți codul în UTF-8.

Cei care au grijă de "greutate" ar trebui mai întâi să arunce de la codul și substituția acele caractere care nu au nevoie (de exemplu, — pentru o bordură lungă sau   pentru un martor indisolubil). Într-adevăr, uneori este vorba de senilitate - unul se odihnește: „Nu voi face pagini în UTF-8, pentru că acestea sunt de la această creștere,“ - și el sculpta, astfel, atribute și substituții teribile de cod, care, fără a le-ar fi de cinci ori mai scurt .


Limbile de programare bazate pe server și bazele de date nu acceptă bine UTF-8?

Cineva va spune: "Toate astea sunt bune, atâta timp cât avem de-a face cu pagini web statice. Dar dacă folosim PHP și MySQL, este mai bine să uităm de UTF-8 ". Acest lucru nu este, de asemenea, adevărat. În antichitate, într-adevăr, unele limbi de programare și sistemele de gestionare a bazelor de date nu știau cum să lucreze cu UTF-8. Dar acum toate limbajele de programare moderne și bazele de date sunt în relații excelente cu această codificare. Și nu limbile moderne și bazele de a folosi nu stóIT: cu cât sistemul este mai vechi, cu atât este mai ușor să hack.

Pe site-ul meu personal puteți vedea rezultatele programului pe PHP 4, care pune în liniuță cratime. Este nevoie de introducerea de text în UTF-8 și produce același text în UTF-8, dar cu despărțire. Apropo, codul sursă în sineóprogramul este prezentat și în UTF-8.

Pot să arăt, de asemenea, un script de amatori în Perl, care numără numărul de lovituri verticale din literele textului. Dacă executați acest script, trebuie să transmiteți un fișier text în codare UTF-8 ca parametru, de exemplu: palki.pl file.txt. Din nou, scenariul în sine este reprezentat și în UTF-8.

Singura dificultate cu programele de server este că multe dintre ele sunt implicit configurate nu pentru UTF-8, ci pentru alte codificări. Ei bine, readuceți-o; Nu suntem copii mici cu dvs., astfel încât oriunde și peste tot să puteți utiliza numai setările implicite.


Motoarele de căutare nu funcționează bine cu UTF-8?

De asemenea, am auzit că motoarele de căutare "se împiedică" despre UTF-8. Aceste informații, din nou, sunt depășite timp de opt ani. Aici, de exemplu, motorul de căutare "Yandex":

Asigurați-vă că găsește tot ce-i place, pe site-ul meu personal, unde, de altfel, munca ei "complică" nu numai UTF-8, ci și o culegere în cuvinte.

Astfel, nu există contraindicații pentru utilizarea pe scară largă a UTF-8. Cei care gândesc diferit, rămân în urmă în viață.


Când nu este necesar să se utilizeze UTF-8

Desigur, există cazuri în care codarea optimă a UTF-8 este încă nedorită. Deși acestea nu sunt deloc acele situații care îi sperie pe adepții miturilor dezbătute mai sus.

În primul rând, uneori nu este nevoie să creați un document nou, ci să faceți modificări la unul existent. De obicei, în astfel de cazuri, nu are sens să convertiți un document existent într-o codare UTF-8, deci trebuie să îl editați în codificarea în care este prezentat.

În al doilea rând, uneori activitatea site-ului este furnizată de kernelul software (așa-numitul "motor"), care nu știe cum să lucreze cu UTF-8. În această situație, bineînțeles, trebuie să vă gândiți dacă este posibil să corectați "motorul" sau să îl înlocuiți cu altul. Dar acest lucru nu este întotdeauna posibil. Unele nuclee software oferă avantaje funcționale, de dragul cărora puteți concilia cu codificarea învechită.

Sper că și alte recomandări vă vor fi utile atunci când lucrați cu UTF-8.

Byte Order Mark (BOM) sunt trei octeți de serviciu care sunt scriși automat la începutul documentului și indică faptul că acesta este stocat în codarea UTF. Detaliile pot fi găsite în manual, iar partea practică este că acești octeți de serviciu în UTF-8 nu sunt necesari, dar, invers, pot induce în eroare unele browsere vechi și alte programe.


Personalizați scurtăturile simple pentru caracterele speciale

Desigur, când am nevoie de un simbol rar folosit - litera "yus", o față sau un hieroglif - mă refer la "tabelul simbolic".
Specificați codificarea ori de câte ori este necesar

Asigurați-vă că serverul web raportează codarea corectă a paginii. În caz contrar, contactați administratorul de server sau citiți materialele de ajutor privind configurarea codificării.

Există servicii de găzduire (gazduire) care sunt "strâns legate" de orice codificare și nu permit proprietarilor de site-uri să utilizeze alte codificări. Cu astfel de găzduire să nu contactezeóum. În ceea ce codificare pentru a face pagini - dezvoltatorul unui site ar trebui să rezolve, în loc de serviciu de plasare a acestuia.

În HTML, este adesea logic să folosiți un meta element:

Există opinii diferite despre utilizarea meta pentru a specifica codificarea. Odată ce am crezut că acest element este mai dăunător decât util. Cu toate acestea, o serie de studii și propria mea experiență m-au forțat să-mi reconsiderăm punctul de vedere. Pentru a aplica sau nu meta - este necesar să se rezolve separat pentru fiecare amplasament beton.

Indiferent de codificarea pe care o utilizați, trebuie să ne amintim că browserele afișează numai acele caractere care sunt în fonturile instalate pe computer. "Tabela de simboluri" le arată exact ele. Lista de fonturi standard Windows este plasată în secțiunea "Directoare".

În Unicode, puteți găsi multe alte simboluri - de exemplu rune, litere glagolitice, diverse pictograme și pictograme. Dar nu vor putea fi inserate în document: majoritatea covârșitoare a utilizatorilor nu au fonturi în care sunt prezente aceste caractere. Aici, chiar UTF-8, cu toate avantajele sale, nu poate ajuta. Trebuie să plasați astfel de caractere sub formă de fișiere bitmaps (așa cum ați făcut aici) sau să căutați alte soluții.

Multe alte caractere "exotice" sunt de obicei disponibile pe computerele utilizatorilor, dar browserul trebuie să ajute la găsirea fontului dorit. De exemplu, pentru a afișa litere vechi slave sau semne matematice (∀ și așa mai departe) - specifică fontul "Lucida Sans Unicode" în CSS.

Unul dintre miturile rare în favoarea UTF-8 spune că această codificare face ca personajul să afișeze caractere care nu pot fi găsite în nici o codificare veche. Cu toate acestea, nu există miracole: dacă nu aveți un font pe computerul dvs. care să conțină o cheie înalte, atunci nu veți vedea acest simbol în UTF-8 cu același succes ca în orice altă codificare.

Principalul avantaj al UTF-8 nu este în expansiunea magică a setului de caractere, ci în modul simplu de includere a acestora în document.

Dacă sunteți familiarizat cu Unicode, atunci poate esti curios de ce sugerez este UTF-8, dar nu și alte funcții avansate de codare - de exemplu, UTF-16 sau UTF-32. Răspund: acestea oferă același avantaj principal ca UTF-8, dar au și o serie de deficiențe. În primul rând, ei, spre deosebire de UTF-8, măresc semnificativ "greutatea" fișierelor. În al doilea rând, cu ei în unele browsere utilizate acum sunt încă probleme.

Apropo, consorțiul W3C recomandă utilizarea UTF-8 pentru paginile web.

Totuși, nu uitați că lumea se schimbă în mod constant. Poate că în viitor vor exista motive care ne vor forța să renunțăm la UTF-8 și să trecem la o codificare mai avansată. Când se întâmplă acest lucru, vă voi spune.