Cel mai bun răspuns
Celelalte răspunsuri nu sunt chiar corecte.
Unicode , este adevărat, conține o listă de caractere din aproape fiecare script mondial. Cu toate acestea, aceasta este doar o parte a standardului Unicode: set de caractere codificat universal . Standardul Unicode include, de asemenea, reguli pentru redarea, ordonarea, normalizarea și, da, codificarea acestor caractere Unicode.
UTF-8 este una dintre cele trei codificări de caractere standard utilizate pentru a reprezenta Unicode ca text al computerului (celelalte fiind UTF-16 și UTF-32). Din punct de vedere istoric, fișierele text erau de obicei codificate ca secvențe de octeți în care fiecare octet reprezenta un caracter. Cu toate acestea, deoarece un octet poate lua doar una dintre cele 256 de valori, acest lucru nu este posibil pentru Unicode. Cea mai simplă codificare Unicode este UTF-32 , care folosește 4 octeți (sau 32 de biți) pe caracter. Cu toate acestea, acest lucru este ineficient în utilizarea sa de stocare, memorie și procesare. Până în 1996 se credea (sau spera) că 2 octeți vor fi suficienți pentru a reprezenta fiecare caracter Unicode, dar apoi oamenii și-au dat seama cât de multe caractere chinezești există. Ca rezultat, unele limbi, cum ar fi JavaScript, folosesc încă 2 octeți ( UCS-2 ) pentru a reprezenta caractere, care pot provoca probleme atunci când se manipulează caractere precum \ unicode {x1F60E }. Pentru a remedia acest lucru, UCS-2 a fost înlocuit cu UTF-16 , unde unele caractere erau reprezentate prin două unități de coduri pe doi octeți, mai degrabă decât una. Acest lucru face ca manipularea șirurilor să fie mai complexă (de exemplu, calcularea lungimii unui șir), dar folosește mai puțin spațiu decât UTF-32.
UTF-8 este similar cu UTF-16, cu excepția unităților sale de cod, toate având un octet (8 biți) lungime, cu caractere reprezentate între una și patru unități de cod. Caracterele cu text simplu (adică ASCII) sunt toate reprezentate printr-un singur octet, într-un mod identic cu șirurile normale non-Unicode. Acesta are marele avantaj că textul ASCII vechi este valid și UTF-8. Mai mult, octeții care reprezintă ASCII nu sunt folosiți în reprezentarea altor caractere, așa că programele vechi care caută acelea nu trebuie actualizate. Aceste avantaje, combinate cu faptul că UTF-8 este în mod normal cel mai eficient spațiu stocarea textului Unicode (în special pentru textele occidentale) înseamnă că marea majoritate a paginilor web din aceste zile sunt codificate în UTF-8.
Răspuns
Programul de procesare a textului trebuie să scoată ceva (și salvați ceva într-un fișier). Dacă doriți ca programele să interopereze, programul dvs. de procesare a textului să vorbească cu driverele de imprimantă și scaner, de exemplu, trebuie să descrieți modul în care comunică. Și, ați dori să faceți acest lucru eficient. un standard permite această intercomunicare. În caz contrar, cotațiile inteligente Microsoft Word nu funcționează cu imprimanta dvs. Canon și scanerul HP. Nu ceea ce doriți …
Editare adăugată: Vedeți răspunsul Cometei despre modul în care unicode este legat de semantică (nu de sintaxă /reprezentare). Acest lucru merge la punctul meu despre interoperabilitate. Vrei ca secvența personajelor tale să fie „semnificativă”. Motiv pentru care unele lucruri sunt reprezentate în unicode, iar altele nu. Utilizatorii alfabetului latin, utilizatorii alfabetului chirilic, utilizatorii alfabetului grecesc și utilizatorii alfabetului turc au toți o literă care arată ca „a” (deși în unele fonturi se disting și în altele nu), dar scriitorii din aceste limbi le consideră diferite personaje (au o diferență semantică). Astfel, unicode le consideră puncte de cod diferite. Reprezintă semantică diferită, sortează diferit, etc. Același lucru este valabil pentru ghilimelele stânga și dreapta și anumite caractere accent. În unele limbi, acestea fac o diferență semantică. Obțineți un anumit tip de interoperabilitate atunci când reprezentați semantica corect.
Obțineți un alt tip atunci când reprezentați lucrurile în mod corect pictural. Cu toate acestea, unicode se străduiește pentru primul, nu pentru cel de-al doilea.
Dacă unicode ar reprezenta omoglifele ca caractere unice, atunci ar avea problema cu privire la ce font a fost folosit și ar distruge corectitudinea semantică. O literă latină a cu font negru este foarte diferită de una helvetică de una romană etc. Și înclinarea și cursivele nu sunt întotdeauna la fel, dar uneori sunt.
Când citesc semne în Bulgaria, majoritatea de multe ori folosesc un font foarte diferit pentru caracterele lor chirilice decât transcrierea lor latină, deci este evident că sunt caractere diferite, chiar și pentru lucruri precum litera „a”. Dar uneori nu o fac și când văd Bm pe o plăcuță de înmatriculare, trebuie să disting dacă transcrie în Vt în engleză sau este pur și simplu latin Bm și există cuvinte întregi de genul acesta trebuie să le citesc pentru a ști ce set de caractere au folosesc.
Și chiar și obținerea corectitudinii semantice este dificilă. Sharp-urile germane există doar cu minuscule și dacă tipăriți cuvântul cu toate „majusculele” utilizați două caractere S, dar există cuvinte cu litere mici care utilizează două caractere „minuscule” și cele care folosesc sharp- s.
Astfel, ca aproape toate standardele, unicode este un compromis. Încearcă să obțină răspunsurile corecte, astfel încât cuvintele să fie reprezentate corect și să poată fi transmise cu ajutorul acestuia. Nu încearcă să fie „grafic” corect, astfel încât o secvență unicode să descrie reprezentarea tipărită fără ambiguități, cu toate detaliile prescrise. Aveți nevoie de mai mult decât unicode pentru a face acest lucru.
Și, odată ce mergeți pe calea respectivă, aveți problema cu dispozitivele care nu pot transmite (sau introduce) descrierea pe care doriți să o specificați. O imprimantă de 200 dpi poate face atât de mult și există subtilități pe care o imprimantă de 1200 dpi le poate exprima, care se pierd pur și simplu la 200 dpi. Întrebarea devine dacă îți pasă? Uneori da, dar alteori nu.
Unicode este bun pentru multe cazuri în care nu doriți și pur și simplu doriți semantica potrivită. Când doriți să transmiteți un cuvânt fără echivoc și știind ce puncte de cod unicode sunt utilizate, știți cum este scris cuvântul într-un limbaj natural. Existența homoglifelor permite să fii ambiguu, dar nu necesită acest lucru. Puteți fi fără echivoc în unicode. Pur și simplu nu puteți reprezenta toate detaliile despre modul în care ar putea fi tipărit .