Cum se configurează smartphone-uri și PC-uri. Portal informativ

Codare html rusă. Codificarea paginilor HTML

În acest articol, voi încerca să pun toate „i”-urile (precum și „i-urile”) atunci când vine vorba de alegerea codificării pentru pagina HTML creată.

Când am început să construiesc site-uri web, am avut constant probleme cu aceste codificări. Salvați pagina HTML, o încărcați pe server, o deschideți, bang și sunt niște prostii. Bună, am ajuns.

Sau în mediul de depanare (de exemplu, mediul de dezvoltare locală „”) totul este în regulă, dar din nou de găzduire ei, nenorociți nenorociți, se uită cu nebunie la mine.

A fost atât de multă durere cu motoarele. Dintr-o dată, dintr-un motiv necunoscut, literele native rusești se transformă în...

Acum ne vom ocupa de această problemă în detaliu și veți ști clar în ce codificare să salvezi pagina HTML?Și prin ce instrumente.

Pentru a ne consolida înțelegerea reciprocă, să definim conceptul codificare. Asa de, codificare este un tabel de corespondență între codurile mașinii și caracterele alfabetului. Există o secvență de caractere de mașină care calculator inteligent, în conformitate cu cele alese tabelul de coduri, înlocuiește cu litere pe care le înțelegem.

În anii 90 ai secolului trecut (ce vechime, și încă îmi amintesc de calendarul din 1991 pe perete) existau 4 codificări pentru PC și încă una, proprie, pentru Mac. Ironia sorții este că, în toate aceste codificări, caracterele latine erau asortate la coduri de mașină folosind același algoritm, dar în ceea ce privește alfabetul chirilic, fiecare dintre codificări avea propria părere.

Toată această confuzie a dus la apariția krakozyabrs. De exemplu, dacă cuvântul „ Întrebare", tastat în codificare Windows-1251, afișare în codificare KOI8-R, obțineți cuvântul " bNOPNYA».

Slavă Domnului, anii 90 sunt deja cu mult în urma noastră și din cinci codări delirante, au mai rămas doar două normale. Dar acest lucru este suficient pentru ca un webmaster începător să se piardă în doi pini. E în regulă, nu-ți face griji, acum te scot din pădure!

Pe acest moment alegere pentru Codificarea documentelor HTML se află între windows-1251 și utf-8. Și acum atenție: utf-8 este mult mai bogat, mai puternic și viitorul este cu el. Deci vom salva fișierele HTML în utf-8.

Îmi voi justifica cuvintele ;). UTF-8 conține caractere precum ↓. Și în windws-1251, în loc de aceste simboluri, acesta este: > . Și în utf-8 există un semn „euro”; utf-8 vă permite, de asemenea, să combinați o mulțime de caractere specifice diferite utilizate în limbi precum georgiana, ebraică, chineză, japoneză într-un singur fișier HTML; Si deasemenea utf-8în codificări HTML- aceasta este o regulă a bunelor maniere.

Sper că v-am convins și veți folosi Unicode (apropo, „utf-8” și „Unicode” sunt sinonime, sau, mai precis, utf-8 este una dintre codificările familiei Unicode, care are a câștigat popularitate în rândul dezvoltatorilor web).

Acum să aruncăm o privire mai atentă la instrumentele de transcodare a fișierelor pe care ți le recomand să le folosești, dragă cititor.

Instrumente pentru lucrul cu codificări de fișiere HTML

De fapt, sunt doar trei dintre ele:

  • PSPad. Editor de text gratuit, preferatul meu.
  • . Un alt editor de text bun și, de asemenea, gratuit.
  • Dreamweaver. Ei bine, sunteți familiarizat cu Dreamweaver de la mine .

Încărcăm un fișier HTML în PSPad.Și cum putem înțelege ce fel de codificare are subiectul experimental încărcat? Foarte simplu, totul este scris clar în bara de stare (mai jos).

Deschideți codificarea fișierelor HTML Windows-1251

Acum, când creați un nou document HTML, să ne ocupăm de codificarea acestuia.

Să mergem la meniul meu preferat PSPad. Suntem interesați de articol Format. În el vom bifa caseta de lângă codificarea utf-8.

Și astfel codarea viitorului fișier este Windows-1251

Acum despre cum modificați codificarea fișierului HTML. Da, se dovedește a fi foarte simplu:

Trebuie să faceți clic pe codificarea necesară în elementul de meniu Format iar codificarea se va schimba. După aceea, salvați fișierul, este recodat, treaba este gata.

Cu privire la Notepad++ totul este foarte asemănător cu situația descrisă mai sus. Doar pentru a lucra cu codificări, trebuie să utilizați elementul de meniu Codificări.

Singura diferență este că, în cazul Notepad++, apar elemente de meniu special concepute pentru conversia de codificare Convertit... (inutil după părerea mea, totul este mai simplu pe PSPad și de aceea îl folosesc). În consecință, acestea sunt cele pe care trebuie să faceți clic dacă doriți să modificați codificările fișierului nostru HTML.

Printre altele, atunci când salvăm în utf-8, avem de ales: fără BOM sau cu BOM. Noi, ca webmasteri, trebuie să folosim codificarea UTF-8 (fără BOM).

Acesta este ceea ce va răspunde Wikipedia la întrebarea „ce este BOM”

Pentru a determina formatul de reprezentare Unicode într-un fișier text, se folosește o tehnică în care la începutul textului este scris caracterul U+FEFF (zero-width non-breaking space), numit și Byte Order Mark (BOM). . Această metodă diferențiază între UTF-16LE și UTF-16BE deoarece caracterul U+FFFE nu există. De asemenea, uneori este folosit pentru a se referi la formatul UTF-8, deși conceptul de ordine a octeților nu se aplică acestui format.

Dacă citiți textul de mai sus de 10 ori și vă scărpinați în cap, devine clar: pentru utf-8 BOM NU avem nevoie. În plus, dacă salvați un fișier cu un script php în codificare utf-8 cu BOM, atunci nu va funcționa, pentru că handler-ul nu va înțelege ce fel de prostii sunt scrise la începutul fișierului script (mă refer la acel spațiu neruptură cu lățime zero).

Ei bine, ei bine, tot ce rămâne este să aruncăm o privire mai atentă Dreamweaver.

Când creați un fișier nou, acordați atenție codului în care va fi creat. Pentru a face acest lucru, în fereastra pentru crearea unui document nou Fișier → Nou (Ctrl+N) utilizați butonul Preferințe...

Și uitați-vă la ce este setat ca codificare implicită:

Codificarea implicită a fișierului HTML generat în Dreamweaver

Transcodați un fișier HTML deschis în Dreamweaver posibil în dialog Proprietăți paginii, care este lansat din meniu ModificaProprietățile paginii (Ctrl + J).

Selectați codarea dorită, apăsați Bineși asta este tot, sarcina de transcodare este finalizată (dar BOM-ul este încă inutil, nu bifați caseta).

Detectarea codificării browserului

Deci, fișierul nostru HTML este salvat în codificarea pe care am ales-o. Acum să ne uităm la întrebarea: Cum știe browserul despre codificarea utilizată într-un anumit fișier HTML?

Există trei opțiuni aici:

1. Noi înșine spunem browserului ce codificare este setată pentru acest fișier HTML. Acest lucru se face folosind eticheta META

Exemplul de mai sus indică browserului că fișierul HTML descărcat este salvat în codificare utf-8.

Dacă fișierul HTML este salvat în codificare Windows-1251, atunci:

Apropo, atunci când transcodați fișierele, nu uitați să schimbați directivele din eticheta META cu cele curente. Dreamweaver, când schimbă codificarea, face acest lucru automat, dar în alte editoare de text trebuie să potriviți singur codificarea aplicată și directiva etichetei META.

HTML-ul complet arată astfel (l citez pentru a înțelege întrebarea „unde este indicată eticheta META cu directiva de codificare?” Atenție la a 4-a linie):

Document fara titlu Ei bine, etc.

2. Folosind fișierul .htaccess. Uneori, serverul va forța antetele pentru fișierele HTML descărcate și va spune browserului codificarea implicită. În acest caz, browserul nu acordă atenție directivelor din eticheta META, ci afișează fișierul HTML în codificarea raportată de server. Pentru ca fișierul să fie descărcat în codificarea de care aveți nevoie (deseori găzduirea vă obligă să specificați codarea Windows-1251), un fișier numit „.htaccess” este creat în rădăcina directorului de găzduire.

Acest fișier este destinat pentru configurarea suplimentară a serverului. Efectul directivelor .htaccess se aplică tuturor fișierelor și subdirectoarelor care se află în directorul în care ați salvat fișierul .htaccess.

Puteți crea acest fișier, de exemplu, în Total Commander apăsând combinația de taste rapide Shift+F4și specificând numele fișierului creat .htaccess. Apoi, editorul de text specifică directive pentru setări suplimentare de codare implicite.

Pentru fișierele HTML codificate utf-8în .htaccess trebuie să scrieți o linie:

AddDefaultCharset UTF-8

Pentru fișierele HTML în codificare Windows-1251:

AddDefaultCharsetWindows-1251

Dacă găzduirea dvs. este cu înțelepciune și nu acordă atenție acestor directive, atunci puteți încerca:

Charset dezactivat pe AddDefaultCharset Off

Dacă acest lucru nu funcționează, atunci întrebați-vă gazda ce ar trebui să faceți pentru a dezactiva codarea implicită :). Toate acestea depind de setările specifice de server ale furnizorului de găzduire.

3. Instrucțiune PHP care specifică codificarea implicită.În fișierul care trebuie afișat în codificarea dorită, în ciuda setărilor serverului furnizorului de găzduire, la început este indicată o directivă cu cod php:

Acest cod php va trimite un antet de server indicând codificarea implicită a browserului. În exemplul de mai sus, codificarea utf-8 va fi folosită pentru a afișa pagina.

De obicei, nu există trucuri în setările serverului furnizorului de găzduire pentru a face față unor astfel de resturi.

Aș dori să notez că, pentru ca serverul să proceseze instrucțiuni PHP, fișierul html trebuie să aibă extensia .php(de exemplu index.php).

Mai aveți întrebări despre codificări? Scrieți în comentarii. Trebuie să rezolvăm aceste probleme odată pentru totdeauna :)

Motivul pentru a înțelege cum funcționează UTF-8 și ce este Unicode este faptul că VBScript nu are funcții încorporate pentru a lucra cu UTF-8. Și din moment ce nu am găsit nimic care să funcționeze, a trebuit să scriu/terminez eu. După părerea mea, experiența este utilă în orice caz. Pentru o mai bună înțelegere, voi începe cu teoria.

Despre Unicode

Înainte de apariția Unicode, codificările pe 8 biți erau utilizate pe scară largă, ale căror principale dezavantaje sunt evidente:
  • Există doar 255 de caractere și chiar și atunci unele dintre ele nu sunt grafice;
  • Abilitatea de a deschide un document cu o codificare diferită de cea în care a fost creat;
  • Trebuie create fonturi pentru fiecare codificare.
Așa că s-a decis să se creeze un singur standard pentru o codificare „largă” care să includă toate caracterele (la început au vrut să includă doar caractere obișnuite, dar apoi s-au răzgândit și au început să adauge altele exotice). Unicode folosește 1.112.064 de puncte de cod (mai mult de 16 biți). Începutul dublează ASCII, iar apoi restul caracterelor latine, chirilice și alte caractere europene și asiatice. Pentru a desemna caractere, utilizați notația hexazecimală de forma „U+xxxx” pentru primele 65k și cu un număr mare de cifre pentru restul.

Despre UTF-8

Am crezut odată că există Unicode și există UTF-8. Mai târziu am aflat că am greșit.
UTF-8 este doar o reprezentare pe 8 biți a Unicode. Caracterele cu coduri mai mici de 128 sunt reprezentate ca un octet, iar din moment ce în Unicode repetă ASCII, textul scris doar cu aceste caractere va fi text ASCII. Caracterele cu coduri de la 128 sunt codificate în 2 octeți, cu coduri de la 2048 - 3, de la 65536 - 4. Deci ar fi posibil să obțineți până la 6 octeți, dar nu mai rămâne nimic de codificat cu ei.
0x00000000 - 0x0000007F: 0xxxxxxx 0x00000080 - 0x000007FF: 110xxxx 10xxxxxx 0x00000800 - 0x0000FFFF: 1110xxxx010000000: 1110xxxx010000000: 111000000 10xxxxxx 10xxxxxx 10xxxxxx

Codificăm în UTF-8

Procedura este aproximativ aceasta:
  • Convertim fiecare caracter în Unicode.
  • Verificăm din ce interval este simbolul.
  • Dacă codul simbolului este mai mic de 128, atunci îl adăugăm neschimbat la rezultat.
  • Dacă codul caracterului este mai mic de 2048, atunci luăm ultimii 6 biți și primii 5 biți ai codului caracterului. Adăugăm 0xC0 la primii 5 biți și obținem primul octet al secvenței și adăugăm 0x80 la ultimii 6 biți și obținem al doilea octet. Concatenați și adăugați la rezultat.
  • Putem continua într-un mod similar pentru codurile mari, dar dacă caracterul este dincolo de U+FFFF va trebui să ne ocupăm de surogate UTF-16.
Funcție EncodeUTF8(s) Dim i, c, utfc, b1, b2, b3 Pentru i=1 la Len(s) c = ToLong(AscW(Mid(s,i,1))) Dacă c< 128 Then utfc = chr(c) ElseIf c < 2048 Then b1 = c Mod &h40 b2 = (c - b1) / &h40 utfc = chr(&hC0 + b2) & chr(&h80 + b1) ElseIf c < 65536 And (c < 55296 Or c >57343) Atunci b1 = c Mod &h40 b2 = ((c - b1) / &h40) Mod &h40 b3 = (c - b1 - (&h40 * b2)) / &h1000 utfc = chr(&hE0 + b3) & chr(&h80 + b2 ) & chr(&h80 + b1) Altfel " Surogat minor sau major UTF-16 utfc = Chr(&hEF) & Chr(&hBF) & Chr(&hBD) Sfârșit dacă EncodeUTF8 = EncodeUTF8 + utfc Funcția de final următor ToLong(intVal) Dacă intVal< 0 Then ToLong = CLng(intVal) + &H10000 Else ToLong = CLng(intVal) End If End Function

Decodificarea UTF-8

  • Căutăm primul caracter al formei 11xxxxxx
  • Numărăm toți octeții următori de forma 10xxxxxx
  • Dacă secvența este de doi octeți și primul octet este 110xxxxx, atunci tăiem prefixele și le adăugăm, înmulțind primul octet cu 0x40.
  • La fel pentru secvențe mai lungi.
  • Înlocuiți întreaga secvență cu caracterul Unicode dorit.
Funcție DecodeUTF8(s) Dim i, c, n, b1, b2, b3 i = 1 Do While i<= len(s) c = asc(mid(s,i,1)) If (c and &hC0) = &hC0 Then n = 1 Do While i + n <= len(s) If (asc(mid(s,i+n,1)) and &hC0) <>&h80 Apoi Ieșire Do Sfârșit Dacă n = n + 1 Buclă Dacă n = 2 și ((c și &hE0) = &hC0) Atunci b1 = asc(mid(s,i+1,1)) și &h3F b2 = c și &h1F c = b1 + b2 * &h40 Elseif n = 3 și ((c și &hF0) = &hE0) Atunci b1 = asc(mid(s,i+2,1)) și &h3F b2 = asc(mid(s,i+1, 1)) și &h3F b3 = c și &h0F c = b3 * &H1000 + b2 * &H40 + b1 Altfel " Caracter mai mare decât U+FFFF sau secvență incorectă c = &hFFFD Sfârșit dacă s = stânga(s,i-1) + chrw( c ) + mid(s,i+n) Elseif (c și &hC0) = &h80 apoi " Octet de continuare neașteptat s = stânga(s,i-1) + chrw(&hFFFD) + mid(s,i+1) End If i = i + 1 Loop DecodeUTF8 = s End Function

Una dintre cele mai frecvente probleme cu care se confruntă un începător Webmaster(și nu doar începători), asta probleme cu codarea pe site. Chiar și pentru mine apare constant când creez site-uri web " abracadabra„Dar, din fericire, știu perfect cum să rezolv această problemă, așa că pun totul în ordine în câteva secunde. Și în acest articol voi încerca să te învăț la fel de repede rezolva probleme legate de codificare pe site.

Primul lucru care merită remarcat este că toate problemele cu apariția „abracadabra” sunt asociate cu o nepotrivire între codificarea documentului și codificarea setată de browser. Să spunem un document în Windows-1251, dar din anumite motive browserul se afișează UTF-8. Și sursa unei astfel de discrepanțe pot fi următoarele motive.

Primul motiv

Metaeticheta este scrisă incorect tipul de conținut. Fii atent, ar trebui să conțină întotdeauna codificarea în care este scris documentul tău.

Al doilea motiv

Se pare că metaeticheta este scrisă așa cum doriți, iar browserul afișează exact ceea ce doriți, dar din anumite motive există încă probleme cu codificarea. Vinovatul aici este aproape sigur că documentul în sine are o codificare diferită. Dacă lucrezi în Notepad++, apoi în dreapta jos există numele codificării documentului curent (de exemplu, ANSI). Dacă puneți o metaetichetă UTF-8, iar documentul în sine este scris ANSI, apoi faceți conversia în UTF-8(prin meniu " Codificări"și punct" Convertiți în UTF-8 fără BOM").

Al treilea motiv

Al patrulea motiv

Și, în sfârșit, ultimul motiv popular este problema de codificare a bazei de date. În primul rând, asigurați-vă că toate tabelele și câmpurile sunt scrise în aceeași codificare, care se potrivește cu codificarea restului site-ului. Dacă acest lucru nu ajută, imediat după conectarea în script, executați următoarea solicitare:

SETĂ NUMELE „utf8”

În loc de " utf8" poate exista o codificare diferită. După aceea, toate datele din baza de date ar trebui să apară în codificarea corectă.

În acest articol, sper că am explicat, cel puțin, 90% dintre problemele asociate cu apariția de „faracie” pe site. Acum trebuie să vă confruntați cu o problemă atât de populară și simplă precum codificarea incorectă în cel mai scurt timp.

Când creează un site web, webmasterii începători au adesea întrebări: ce codificare să folosească pentru site-ul web, cum diferă UTF-8 de Windows-1251 și cum să îl introducă în setul de caractere META al paginilor HTML ale site-ului. Răspunsurile la toate aceste întrebări sunt în acest articol.

Ce este codificarea site-ului și cum funcționează?

Codificarea poate fi prezentată sub forma unui tabel format din diferite litere, numere și alte simboluri pe înțelesul oamenilor, care sunt codificate într-un anumit mod. Când deschideți un fișier text, care include pagini HTML, computerul citește din antetul fișierului în ce codificare a fost salvat și afișează textul în codificarea corespunzătoare, transformând datele computerului într-o formă care poate fi înțeleasă de oameni, comparând aceste date cu tabel de codificare. Dacă informațiile de codificare din antetul fișierului se potrivesc cu codificarea în care sunt stocate datele în pagina HTML, atunci utilizatorul vede literele, numerele și alte simboluri familiare cu el. Dacă există o discrepanță, rezultatul este că utilizatorului i se prezintă un set de caractere de neînțeles, acest lucru se întâmplă mai ales în programele de e-mail mai vechi. Dacă un utilizator primește o scrisoare cu farfurie de neînțeles, atunci pur și simplu parcurgând diferite codificări, este de obicei posibil să ghicească și să o selecteze pe cea în care este scrisă scrisoarea și, ca urmare, un set de caractere de neînțeles se transformă într-un mod de înțeles uman. text.

Același lucru se întâmplă și cu paginile HTML ale site-ului. Dacă documentul a fost salvat, de exemplu, în codificare UTF-8, iar documentul în sine conține o etichetă META care indică faptul că aceasta este codificare Windows-1251, atunci browserul va compara din nou datele salvate în fișier cu tabelul de codificare. specificate acestuia și deoarece caracterele sunt codificate în funcție de -diferent, browserul va afișa un set de caractere de neînțeles în locul textului obișnuit, sau unele dintre litere pot fi în formă normală, în timp ce alte litere sau simboluri pot fi afișate, pt. de exemplu, sub formă de semne de întrebare. Toate cele de mai sus se aplică și pentru afișarea numelor de fișiere.

Când creați un document nou într-un editor de text, este mai bine să vă asigurați imediat că este selectată codificarea dorită. Editorii moderni vă permit să convertiți textul unui document deschis de la o codificare la alta, iar Notepad-ul standard vă permite să selectați codificarea numai atunci când salvați fișierul.

Cele mai comune codificări

Din paragraful anterior, știți deja ce este codificarea și de ce este atât de important să o scrieți corect în codul paginilor site-ului. Să aflăm acum care dintre multele codificări este cel mai bine de ales pentru viitorul site. Deoarece cel mai comun și mai ușor de învățat sistem de operare a fost întotdeauna sistemul de operare Windows, majoritatea dezvoltatorilor web au creat pagini HTML în codificarea Windows-1251 (ANSI), care a fost folosită implicit. Dar Windows-1251 nu acceptă un număr foarte mare de litere și simboluri, iar dezvoltatorii doresc să folosească diverse săgeți, inimi, pătrate și alte simboluri în textele lor, inclusiv necesitatea de a combina cuvinte din diferite limbi într-un singur document, deci a fost înlocuit de mult cu cât a sosit UTF-8 mai extins și majoritatea dezvoltatorilor folosesc această codificare.

Probleme de codificare nu numai în pagina HTML

Site-ul, fie că este doar o colecție de documente HTML statice sau script-uri dinamice complexe care generează pagini din mers, este găzduit pe un server web, care funcționează și cu o codificare specifică. Și dacă serverul oferă informații într-o singură codificare, iar paginile sau scripturile dvs. sunt salvate într-o codificare diferită, atunci din nou pot apărea probleme cu afișarea paginilor în browserul utilizatorului. Multe găzduiri vă permit să schimbați setările și să selectați codificarea în conformitate cu cea folosită în fișierele site-ului prin intermediul panoului de control, sau o puteți scrie în fișierul .htaccess dacă găzduirea folosește popularul server web Apache.

Aproape niciun site web modern nu poate funcționa fără utilizarea unei baze de date MySQL și poate deveni, de asemenea, o sursă de probleme de codificare. Dacă fișierele site-ului sunt salvate într-o codificare, iar informațiile din baza de date sunt în alta, atunci pe pagină acea parte a informațiilor care este scoasă din baza de date poate fi afișată sub forma acelorași semne de întrebare sau alte simboluri de neînțeles . Pentru a evita problemele de codare, la fel ar trebui să fie și pentru serverul web, baza de date MySQL, în scripturi, în paginile HTML ale site-ului și în eticheta META, care este scrisă în codul HTML. Dacă există probleme cu afișarea textului, verificați toate cele de mai sus pentru problema.

Setul de caractere META al documentului HTML

Pentru a spune browserului și motoarelor de căutare în ce codificare sunt salvate paginile site-ului, în codul lor este scris un set de caractere META.

Pentru codificarea Windows-1251:

Titlul paginii

Textul paginii


Pentru codificarea UTF-8:

Titlul paginii

Textul paginii


Acum știți ce este codificarea site-ului și unde să căutați probleme dacă textul este afișat incorect în orice parte a site-ului.

Copierea articolului este interzisă.

). Și aici vom vorbi despre partea practică a utilizării UTF-8.

Avantajul principal

Cu codificarea UTF-8, puteți include direct orice caracter din întregul set Unicode în documentul dvs. Codificările vechi (cum ar fi Windows-1251 sau KOI8-R) nu au furnizat mai mult de 256 de caractere, dar Unicode are peste 100.000 de caractere. Printre acestea se numără semnele tipografice (liniuță, ghilimele, elipse, apostrof, spațiu care nu se rupe, cratima care nu se rupe etc.), caractere speciale (№, §, ©, ‰, × etc.), litere cu semne diacritice și ligaturi (é, è, Ü, Æ, ø, fi etc.), simboluri ale aproape tuturor alfabetelor existente în lume (α, Ω, א, ת, ѣ, 伲, 儻 etc.), pictograme și icoane ( →, ■, , ☺ etc.) și multe alte simboluri.

Uitați-vă la „Tabelul de simboluri” de pe computer. Cu codificarea UTF-8, puteți lua orice caracter direct din acest tabel și îl puteți lipi direct în document. Dacă aveți nevoie de un semn de drept de autor, diplomă sau integral, nu trebuie să căutați un font special, să prezentați acest semn într-un format grafic sau să veniți cu alte trucuri. În codificarea UTF‑8, orice caracter, fie că este o fracțiune ⅓ sau un caracter chinezesc, poate fi utilizat într-un document în același mod ca litera latină „A”, rusă „ы” sau semnul „+”.

În codificările mai vechi, era posibil să se insereze caractere speciale într-un document folosind substituții ( referințe). De exemplu, liniuța em corespundea substituției & mdash ; (de asemenea & # 8212 ; sau & # x2014 ; ), iar litera greacă „pi” este înlocuită cu & pi ; (de asemenea & # 960 ; sau & # x3c0 ; ). Pentru majoritatea caracterelor au existat doar substituții numerice: de exemplu, pentru fracția ⅓ - & # 8531 ; sau & # x2153 ; , pentru semnul muzical „plat” - & # 9837 ; sau & # x266d ; , pentru o cratima care nu se rupe - & # 8209 ; sau & # x2011 ; . Desigur, acest lucru este foarte incomod. În primul rând, este prea lung: de exemplu, în loc de un caracter „♭” trebuie să inserați șapte: & # 9837 ; . În al doilea rând, un document cu substituții este neplăcut de vizualizat și editat. Este mult mai convenabil când vezi în document direct caracterele care ar trebui să fie acolo, și nu coduri precum & mdash ; sau & # x3c0 ; .

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

Mituri despre dezavantaje

După ce am discutat despre avantajele UTF-8, ar merita să vorbim despre dezavantajele acestei codificări. Și imaginați-vă, ea nu are deficiențe. Există doar mituri și legende, precum și zvonuri și speculații răspândite de conservatorii mușchi și retrogradi. Cu mulți ani în urmă, au existat unele neajunsuri, dar acum s-au scufundat în uitare.

Browserele acceptă slab UTF-8?

Se spune că unii utilizatori au încă browsere mai vechi care nu sunt capabile să redeze 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 mult timp, înțeleg perfect UTF-8. Și browsere mai moderne - cu atât mai mult.

UTF-8 nu este deloc o codificare „nouveală” sau „tânără”, a fost folosită cu succes de mai bine de zece ani. Dacă un anumit dezvoltator a aflat recent despre asta sau încă nu știe, aceasta este o lipsă a calificărilor sale, nu a codării sale.

Aveți probleme cu UTF-8 pe serverul dvs. web?

„Am pus o pagină în UTF‑8 pe server, dar este afișată în dezordine”, așa se plâng uneori dezvoltatorii începători. De fapt, această problemă se întâmplă cu o mare varietate de codificări și nu are legătură cu nicio caracteristică specifică a UTF-8. Problema aici este că pagina este făcută într-o codificare, iar serverul raportează alta în anteturile HTTP. Este necesar să se alinieze setările serverului cu codificarea reală a paginilor web. Repet că acest lucru trebuie făcut cu orice codificare.

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

Ei spun că documentele în UTF-8 sunt de două ori mai mari decât în ​​codificările mai vechi. Acesta este un mit din categoria „Am auzit un sunet, dar nu știu unde este”. De fapt, nu este necesar din când în când. De exemplu, dacă un document constă numai din caractere ASCII (litere latine, numere, semne de punctuație etc.), atunci în codificarea UTF-8 va ocupa exact același număr de octeți ca în oricare altul. Dacă un document conține doar litere ale alfabetului rus și nici un alt caracter (ceea ce, vedeți, este destul de rar), atunci în UTF-8 va deveni de fapt de două ori mai mare. Și dacă conține, de exemplu, părți egale litere ruse și arabe, în UTF-8 va fi la jumătate mai mare decât, de exemplu, în Windows-1251 sau Asmo-708.

Chiar pagina pe care o citiți acum are 35 de kiloocteți în codificare UTF‑8. Și dacă îl traduceți, de exemplu, în Windows-1251, va ocupa 26 de kiloocteți. Apropo, când comparați pagini, vedeți cât de ușor este de citit codul din UTF‑8.

Când vorbim despre „greutatea” paginilor web, trebuie remarcat faptul că cea mai mare parte a acestei ponderi nu este de obicei cod HTML, ci imagini. (Și, eventual, alte obiecte: videoclipuri Flash, fișiere JavaScript etc.) Ca urmare, chiar și în cazurile în care un document UTF-8 este mărit, acest lucru este aproape imperceptibil în cantitatea totală de date. În opinia mea, a face codul să se „umfle” cu câteva procente este un preț ieftin de plătit pentru UTF-8 cu care am început.

Cei cărora le pasă de greutate ar trebui să înlăture mai întâi atributele HTML vechi (cum ar fi cellpadding sau valign) și metacaracterele pentru caracterele care nu au nevoie de ele (cum ar fi & mdash ; pentru em liniuță sau & nbsp ; pentru spațiu care nu se sparge). Într-adevăr, uneori ajunge până la nebunie - cineva insistă: „Nu voi face pagini în UTF‑8, pentru că le face mai mari” — și, în același timp, creează cod cu atribute și substituții teribile, care fără ele ar putea fi de cinci ori mai scurt.

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

Cineva va spune: „Totul este bine 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.” Nici acest lucru nu este adevărat. În vremuri străvechi, într-adevăr, unele limbaje de programare și sisteme de gestionare a bazelor de date nu puteau funcționa cu UTF-8. Dar acum toate limbajele de programare și bazele de date moderne sunt în relații excelente cu această codificare. Dar nu ar trebui să utilizați limbi și baze de date învechite: cu cât sistemele sunt mai vechi, cu atât este mai ușor să le piratați.

Cu toate acestea, nu uitați că lumea este în continuă schimbare. Poate că în viitor vor apărea motive care ne vor obliga să abandonăm UTF-8 și să trecem la o codificare și mai avansată. Când se va întâmpla asta, cu siguranță vă voi anunța.

Cele mai bune articole pe această temă