Invatare Atomica

Cum este reprezentat textul: ASCII si UNICODE

Progres lectie:
0%
🎯

Obiectivul lectiei

Vei intelege ce se intampla cu adevarat intre momentul in care apesi o tasta si momentul in care litera apare pe afisul de concert: fiecare caracter devine un numar, numarul devine octeti in memorie, iar setul de caractere ales decide daca „vioară" ajunge intreg la tipografie sau ajunge stalcit. Vei lucra cu tabelul ASCII, cu catalogul UNICODE si cu codificarea UTF-8, apoi vei salva corect un fisier text in LibreOffice Writer sau Microsoft Word.

Dupa aceasta lectie vei putea:

  • Sa explici cum ajunge o litera tastata sa fie pastrata in memorie ca numar
  • Sa citesti si sa scrii coduri ASCII pentru litere mari, litere mici, cifre si spatiu
  • Sa recunosti cauza textului stalcit (mojibake) si sa numesti setul de caractere vinovat
  • Sa deosebesti un code point UNICODE (ex. U+0219) de octetii care il scriu in fisier
  • Sa calculezi cati octeti ocupa in UTF-8 un titlu cu diacritice si simboluri
  • Sa salvezi un fisier text cu setul de caractere UTF-8 in Writer sau in Word

Incearca singur!

Provocare:

Un coleg de la coregrafie iti trimite programul spectacolului intr-un fisier text. Il deschizi si, in loc de titlul scris de el, vezi:

Recital de vioară   iar pe calculatorul din laborator, acelasi fisier arata Recital de vioar?

Textul nu a fost sters de nimeni si fisierul are exact aceeasi marime ca la trimitere. Scrie mai jos ce crezi tu ca s-a stricat: literele din fisier, programul care le arata, sau altceva? Si de ce doar litera ă a patit-o, in timp ce Recital de vioar a ajuns perfect?

💡 Ai nevoie de un indiciu?

In fisier nu exista litere. Exista numere. Programul care deschide fisierul primeste sirul de numere si trebuie sa decida ce litera reprezinta fiecare numar — foloseste pentru asta un set de caractere, adica un tabel de tipul „numarul 65 inseamna A".

Daca cel care a scris a folosit un tabel, iar cel care citeste foloseste alt tabel, numerele raman identice, dar literele afisate se schimba. De aici si detaliul care te ajuta: literele simple (fara diacritice) au acelasi cod in aproape toate tabelele, deci ele „supravietuiesc" oriunde.

1

1. In memorie nu exista litere — exista numere

Exemplu: scrii numele solistei pe afis

Deschizi un document nou si tastezi trei litere: Ana. Pe ecran vezi un nume. In memoria calculatorului, in acelasi moment, sunt scrise trei numere:

A  ->  65
n  ->  110
a  ->  97

Daca schimbi fontul din Times New Roman in altul, desenul literelor se schimba complet — dar cele trei numere raman 65, 110, 97. Fontul schimba haina; codul este omul de dedesubt.

Caracter = un semn din text: o litera, o cifra, un semn de punctuatie, spatiul, un simbol muzical.
Cod (numarul caracterului) = numarul intreg prin care calculatorul retine acel caracter.
Set de caractere = tabelul care spune ce caracter corespunde fiecarui numar. Fara tabel, numerele nu inseamna nimic.
Numerele, la randul lor, sunt tinute in biti (cifre binare: 0 sau 1). Opt biti formeaza un octet (byte). Cu 8 biti se pot scrie 28 = 256 de valori diferite, adica numere de la 0 la 255. Cu numai 7 biti se pot scrie 27 = 128 de valori, de la 0 la 127 — retine cifra 128, ea explica intreaga lectie.
Analogie din sala de repetitii

Partitura nu contine sunete; contine semne. Sunetul apare abia cand un instrumentist citeste semnul dupa o conventie invatata (cheia sol, portativul). La fel, fisierul text nu contine litere; contine numere. Litera apare abia cand programul citeste numarul dupa conventia unui set de caractere. Schimbi cheia la inceputul portativului — se schimba tot ce urmeaza, desi notele scrise pe hartie n-au fost atinse.

2

2. ASCII — primul tabel, cu 128 de casute

Exemplu: cuvantul Nota, litera cu litera
N -> 78      o -> 111      t -> 116      a -> 97

Toate patru sunt numere sub 128. Nu e o intamplare: tabelul din care provin, ASCII, are exact 128 de casute.

ASCII (American Standard Code for Information Interchange) este setul de caractere standardizat in Statele Unite in anii 1960, care foloseste 7 biti si acopera deci 128 de coduri, de la 0 la 127. Este cel mai vechi tabel inca in uz si baza aproape a tuturor celor care au venit dupa el.
Cum este impartit tabelul ASCII
0 - 31 si 127 : coduri de control (nu se vad pe ecran)
                9 = Tab, 10 = rand nou (LF), 13 = retur de car (CR)
32            : spatiul
33 - 47       : semne de punctuatie: ! " # ... , - . /
48 - 57       : cifrele 0 1 2 3 4 5 6 7 8 9
65 - 90       : literele mari  A B C ... X Y Z
97 - 122      : literele mici  a b c ... x y z
Doua reguli care iti economisesc tabelul:
1. In fiecare zona, literele urmeaza in ordine alfabetica. Daca A = 65, atunci B = 66, iar L, fiind a 12-a litera, are codul 65 + 11 = 76.
2. Litera mica are intotdeauna codul literei mari plus 32: A = 65, deci a = 97; N = 78, deci n = 110.
Ce NU incape in ASCII — si de aici incep toate necazurile

ASCII a fost facut pentru limba engleza. In cele 128 de casute nu exista ă, â, î, ș, ț. Nu exista nici é franceza, nici ü germana, nici alfabetul grec sau chirilic, nici simbolul muzical ♪. Un afis de concert scris curat romaneste nu poate fi pastrat integral in ASCII — pur si simplu nu exista numere libere pentru literele care ne trebuie.

3

3. Al optulea bit, paginile de cod si textul stalcit

Exemplu: acelasi fisier, doua calculatoare

Fisierul program-concert.txt contine titlul Recital de vioară. Pe calculatorul colegului arata corect. Pe al tau arata Recital de vioară, iar pe cel din laborator Recital de vioar?. Marimea fisierului: identica pe toate trei. Deci nimic nu s-a pierdut — doar s-a citit dupa alt tabel.

Cum ASCII foloseste doar 7 biti dintr-un octet de 8, ramane un bit liber. Cu el se ajunge de la 128 la 256 de casute, adica inca 128 de locuri libere pentru literele fiecarei tari. Problema: locurile libere sunt aceleasi pentru toti, dar fiecare tara si-a pus acolo alte litere. Asa au aparut zeci de tabele diferite, numite pagini de cod sau seturi de caractere extinse.
Cateva pagini de cod pe care le vei intalni

ISO-8859-1 (numit si Latin-1) — limbi din vestul Europei: franceza, germana, spaniola.
ISO-8859-2 (Latin-2) — limbi din centrul si estul Europei; contine ă, â, î, dar pentru sunetele „s" si „t" romanesti are numai variantele cu sedila, ş si ţ.
ISO-8859-16 (Latin-10) — tabelul care aduce, in sfarsit, formele corecte romanesti cu virgula dedesubt: ș si ț.
Windows-1250 si Windows-1252 — paginile folosite ani la rand de Windows in Europa centrala, respectiv de vest.

De ce se stalceste textul: fisierul text simplu pastreaza doar octetii, nu si numele tabelului dupa care au fost scrisi. Programul care il deschide trebuie sa ghiceasca tabelul. Daca ghiceste altul, primele 128 de coduri (literele engleze, cifrele, spatiul) ies corect — pentru ca acolo toate tabelele sunt identice cu ASCII — dar codurile de peste 128 ies alte litere. Rezultatul se numeste mojibake (text stalcit).
Detaliul de tipograf: sedila nu este virgula

Pentru un elev de arte vizuale diferenta se vede cu ochiul liber: ş are dedesubt o codita lipita de litera (sedila), iar ș are o virgula detasata. Formele corecte in limba romana sunt cele cu virgula. Multe documente mai vechi, scrise cu pagini de cod din anii 2000, contin inca variantele cu sedila — la tipar diferenta se observa imediat pe un afis de format mare.

4

4. UNICODE — un singur catalog pentru toate scrierile lumii

Exemplu: un singur program de spectacol, patru arte

Vrei sa scrii in acelasi document, fara sa schimbi nimic intre randuri:

Recital de vioară si violoncel     (diacritice romanesti)
Adagio ♪  ♭  ♯                     (simboluri muzicale)
Scena „Antigona" — cor: Χορός      (alfabet grec)
Atelier de scenografie 🎭          (pictograma)

Cu paginile de cod din atomul precedent asa ceva era imposibil: fiecare pagina avea numai 256 de casute si trebuia sa alegi o singura limba pe fisier. UNICODE rezolva exact aceasta problema.

UNICODE este catalogul international care da fiecarui caracter din lume un numar unic, numit code point. Codul se scrie in hexazecimal, dupa prefixul U+: de exemplu U+0041 pentru A. Spatiul de numerotare merge de la U+0000 pana la U+10FFFF, adica peste un milion de pozitii posibile; dintre ele sunt deja atribuite peste 150.000 de caractere, acoperind peste 150 de sisteme de scriere, plus simboluri tehnice, muzicale si pictograme.
Code point-uri utile pentru un liceu de arte

Diacriticele romanesti: ă = U+0103, â = U+00E2, î = U+00EE, ș = U+0219, ț = U+021B (majusculele: Ș = U+0218, Ț = U+021A).
Semne muzicale uzuale: ♪ = U+266A (optime), ♫ = U+266B (doua optimi legate), ♭ = U+266D (bemol), ♮ = U+266E (becar), ♯ = U+266F (diez).
Notatie muzicala propriu-zisa: 𝄞 = U+1D11E (cheia sol).
Pictograme: 🎭 = U+1F3AD (arte ale spectacolului), 🎨 = U+1F3A8 (paleta de pictor).

Atentie la ce NU spune UNICODE. Catalogul stabileste doar care este caracterul si ce numar poarta. El nu spune nici cum arata desenat (asta o decide fontul), nici pe cati octeti se scrie in fisier (asta o decide codificarea, subiectul atomului urmator). Un code point este o pozitie in catalog, nu o cantitate de memorie.
5

5. UTF-8 — cum ajunge code point-ul octeti pe disc

Exemplu: doua cuvinte aproape identice, doua marimi diferite

Salvezi in doua fisiere text, cu UTF-8, cate un singur cuvant:

Cantec  ->  6 caractere,  6 octeti
Cântec  ->  6 caractere,  7 octeti

Acelasi numar de litere, dar al doilea fisier este cu un octet mai mare. Diferenta o face o singura litera: â.

UTF-8 este cea mai folosita codificare a catalogului UNICODE: regula prin care un code point este transformat in octeti pentru a fi scris in fisier. Este o codificare cu lungime variabila — un caracter ocupa intre 1 si 4 octeti, in functie de cat de departe se afla in catalog.
Cati octeti ocupa fiecare
1 octet   U+0000 - U+007F    literele engleze, cifrele, spatiul, punctuatia
2 octeti  U+0080 - U+07FF    ă â î ș ț, alfabetul grec, cel chirilic
3 octeti  U+0800 - U+FFFF    ♪ ♫ ♭ ♯ si majoritatea simbolurilor
4 octeti  U+10000 - U+10FFFF 𝄞 (cheia sol), pictogramele 🎭 🎨
De ce a castigat UTF-8. Primele 128 de coduri sunt scrise pe un singur octet, cu exact aceleasi valori ca in ASCII. Asta inseamna ca orice fisier ASCII vechi este deja, fara nicio conversie, un fisier UTF-8 valid. UTF-8 pastreaza compatibilitatea cu trecutul si adauga restul lumii deasupra; de aceea este astazi codificarea implicita pe web.
Consecinta practica: numarul de caractere nu este numarul de octeti

Cand o platforma iti spune ca descrierea unui eveniment „poate avea maximum 100 de caractere", ea poate numara de fapt octeti. Un titlu de 100 de caractere scris cu diacritice poate depasi limita, pentru ca fiecare ă sau ș consuma doi octeti, iar o pictograma consuma patru. Acelasi lucru explica de ce un subtitrare .srt cu diacritice este ceva mai mare decat aceeasi subtitrare fara ele.

Alte codificari ale aceluiasi catalog

UNICODE mai poate fi scris si prin UTF-16 (2 sau 4 octeti pentru fiecare caracter) sau UTF-32 (intotdeauna 4 octeti, simplu de prelucrat, dar risipitor). Catalogul este acelasi; se schimba doar ambalajul. Pentru documente si pentru web, alegerea implicita corecta ramane UTF-8.

6

6. In practica: salvare si inserare in Writer si in Word

Exemplu: tipografia cere programul ca text simplu

Ai scris programul spectacolului intr-un document si tipografia iti cere continutul ca fisier .txt, ca sa il importe in macheta afisului. Daca salvezi la intamplare, ș si ț pot ajunge acolo semne de intrebare. Doua clicuri in dialogul de salvare rezolva definitiv problema.

A. Salvarea unui fisier text cu UTF-8
LibreOffice Writer

Fisier > Salvare ca... (File > Save As), alegi tipul Text (.txt) si apesi Salvare. Se deschide o caseta suplimentara, Optiuni filtru ASCII (ASCII Filter Options), unde exista campul Set de caractere (Character set). Alegi acolo Unicode (UTF-8) si confirmi.

Microsoft Word — unde difera

Fisier > Salvare ca, tipul Text simplu (*.txt). Word deschide o caseta cu alt nume, Conversie fisier (File Conversion), in care alegi optiunea Alta codificare (Other encoding) si selectezi din lista Unicode (UTF-8). Diferenta fata de Writer este doar numele casetei si faptul ca la Word trebuie sa alegi intai „alta codificare" pentru a debloca lista.

B. Inserarea unui caracter dupa code point
Cand ai nevoie de ♪ sau de ♭ si nu le ai pe tastatura

LibreOffice Writer: Inserare > Caracter special... (Insert > Special Character) deschide o fereastra cu toate caracterele si cu un camp de cautare. Varianta rapida: scrii in text codul hexazecimal, de exemplu 266A, si apesi Alt+X — codul se transforma in caracterul ♪. Apasand Alt+X inca o data, caracterul se transforma inapoi in cod, ceea ce este util cand vrei sa afli code point-ul unui semn primit de la altcineva.

Microsoft Word: Inserare > Simbol > Mai multe simboluri... (Insert > Symbol > More Symbols), unde exista campul Cod caracter si lista de la: pusa pe Unicode (hex). Scurtatura Alt+X dupa codul scris in text functioneaza si in Word, la fel ca in Writer.

C. De ce cu .odt si .docx problema aproape nu apare
Text simplu fata de document

Fisierele .odt (Writer) si .docx (Word) nu sunt text simplu: sunt arhive care pastreaza inauntru textul in UNICODE, impreuna cu formatarea. De aceea diacriticele nu se pierd cand dai documentul mai departe. Riscul apare la formatele de text simplu, care pastreaza doar octetii goi, fara sa spuna dupa ce tabel au fost scrisi: .txt, .csv (tabele exportate) si .srt (subtitrari). Acolo alegerea UTF-8 la salvare este obligatorie.

Recomandare pentru numele fisierelor

Continutul fisierului scrie-l cu diacritice, corect romaneste. Numele fisierului, in schimb, mai ales daca ajunge pe un site sau intr-un e-mail catre tipografie, este mai sigur fara diacritice si fara spatii: program-concert-vioara.txt in loc de Program concert vioară.txt. Sistemele prin care trece fisierul nu folosesc toate acelasi set de caractere pentru nume.

7

7. Recapitulare — tot ce ai invatat astazi

Inainte de a trece la exercitii, revezi rapid drumul complet: tasta → caracter → cod → octeti → fisier.
Caracter, cod, set de caractere

In memorie nu exista litere, ci numere. Setul de caractere este tabelul care spune ce litera inseamna fiecare numar. Fontul schimba doar desenul, niciodata codul.

ASCII

7 biti, 128 de coduri (0-127). Spatiu = 32, cifrele 48-57, majusculele 65-90, minusculele 97-122. Litera mica = litera mare + 32. Nu contine diacritice romanesti.

Pagini de cod si mojibake

Al optulea bit a adus 128 de locuri libere, pe care fiecare tara le-a umplut altfel (ISO-8859-2, ISO-8859-16, Windows-1250). Acelasi octet, alt tabel, alta litera pe ecran: asa apare textul stalcit.

UNICODE

Un singur catalog pentru toate scrierile: fiecare caracter are un code point unic, scris U+XXXX (ș = U+0219, ♪ = U+266A). Peste 150.000 de caractere atribuite. Code point-ul spune CARE caracter, nu cati octeti.

UTF-8

Transforma code point-ul in octeti, cu lungime variabila: 1 octet pentru zona ASCII, 2 pentru diacriticele romanesti, 3 pentru semnele muzicale uzuale, 4 pentru cheia sol si pictograme. Compatibil cu ASCII, implicit pe web.

In aplicatie

La salvarea unui .txt: Writer → caseta „Optiuni filtru ASCII", camp „Set de caractere" → Unicode (UTF-8); Word → caseta „Conversie fisier" → „Alta codificare" → Unicode (UTF-8). Caracter dupa cod: cod hexazecimal + Alt+X, in ambele programe.

Exercitii practice

Exercitiul 1 (Nivel minim) — Citeste si scrie coduri ASCII

Foloseste numai tabelul si cele doua reguli din atomul 2. (a) Scrie codurile ASCII ale literelor din cuvantul BAL. (b) Descifra sirul de coduri 78 111 116 97 si spune ce cuvant este. (c) Explica in doua randuri de ce cuvantul Bală nu poate fi scris intreg cu coduri ASCII.

Vezi rezolvarea

(a) BAL — sunt litere mari, deci zona 65-90, in ordine alfabetica:

  1. B este a doua litera: 65 + 1 = 66
  2. A este prima litera: 65
  3. L este a 12-a litera: 65 + 11 = 76

Raspuns: 66 65 76.

(b) 78 111 116 97 — 78 este in zona majusculelor (65-90), restul in zona minusculelor (97-122):

  1. 78 = 65 + 13 → a 14-a litera mare → N
  2. 111 = 97 + 14 → a 15-a litera mica → o
  3. 116 = 97 + 19 → a 20-a litera mica → t
  4. 97 → prima litera mica → a

Cuvantul este Nota.

(c) Primele trei litere, B, a, l, au coduri ASCII (66, 97, 108). Litera ă nu are: ASCII are numai 128 de casute, umplute cu semnele necesare limbii engleze, si niciuna dintre ele nu este o litera cu semn diacritic romanesc. Pentru ă este nevoie de UNICODE, unde ea are code point-ul U+0103.

Exercitiul 2 (Nivel standard) — Salveaza programul de spectacol fara sa pierzi diacriticele

Deschide LibreOffice Writer sau Microsoft Word si scrie trei randuri de program de spectacol care sa contina obligatoriu toate cele cinci diacritice romanesti, de exemplu: Recital de vioară / Piesă pentru două voci / Scenografie și costume — atelierul școlii. Insereaza apoi, prin cod, semnul ♪ (U+266A) la inceputul primului rand. Salveaza documentul ca fisier .txt cu setul de caractere UTF-8, inchide-l si redeschide-l. Noteaza in caiet calea exacta de meniu pe care ai parcurs-o si numele casetei in care ai ales setul de caractere.

Vezi rezolvarea

Inserarea semnului ♪: scrii in text 266A si apesi Alt+X; codul se transforma in ♪. Varianta prin meniu: in Writer Inserare > Caracter special..., in Word Inserare > Simbol > Mai multe simboluri..., cu lista „de la" pusa pe Unicode (hex) si codul 266A in campul „Cod caracter".

Salvarea, in LibreOffice Writer:

  1. Fisier > Salvare ca...
  2. La tipul fisierului alegi Text (.txt) si apesi Salvare
  3. In caseta Optiuni filtru ASCII, la campul Set de caractere, alegi Unicode (UTF-8) si confirmi

Salvarea, in Microsoft Word (aici difera):

  1. Fisier > Salvare ca
  2. La tip alegi Text simplu (*.txt)
  3. In caseta Conversie fisier bifezi Alta codificare si selectezi din lista Unicode (UTF-8)

Verificarea la redeschidere: daca toate cele cinci diacritice si semnul ♪ apar corect, setul de caractere a fost salvat bine. Daca in locul lor apar semne de intrebare sau perechi de litera ciudate (de tipul Ä urmat de alt semn), fisierul a fost scris sau citit cu o pagina de cod, nu cu UTF-8 — se reia salvarea si se alege explicit Unicode (UTF-8).

Observatie: daca l-ai salvat ca .odt sau .docx, caseta cu setul de caractere nici nu apare — acele formate pastreaza textul in UNICODE din start. Caseta apare tocmai pentru ca .txt este text simplu si trebuie sa decizi tu tabelul.

Exercitiul 3 (Nivel performanta) — Cate caractere si cati octeti are titlul afisului

Titlul afisului de concert este exact acesta, cu un spatiu intre grupuri: Recital ♪ vioară

(a) Cate caractere are titlul? (b) Cati octeti ocupa el intr-un fisier salvat cu UTF-8? Arata calculul pe grupe de caractere. (c) Ce s-ar intampla cu fiecare parte a titlului daca acelasi text ar fi salvat cu pagina de cod ISO-8859-2 in loc de UTF-8? (d) Ce ii recomanzi colegului care trimite titlul la tipografie?

Vezi rezolvarea

(a) Numarul de caractere. Spatiile sunt si ele caractere:

  1. Recital = 7 caractere
  2. spatiu = 1
  3. ♪ = 1
  4. spatiu = 1
  5. vioară = 6 caractere

Total: 7 + 1 + 1 + 1 + 6 = 16 caractere.

(b) Numarul de octeti in UTF-8, dupa tabelul din atomul 5:

  1. Recital — 7 litere din zona ASCII, cate 1 octet fiecare = 7 octeti
  2. cele doua spatii — tot zona ASCII, 1 octet fiecare = 2 octeti
  3. ♪ — U+266A, deci in intervalul U+0800 - U+FFFF = 3 octeti
  4. vioar — 5 litere ASCII = 5 octeti; ă — U+0103, in intervalul U+0080 - U+07FF = 2 octeti

Total: 7 + 2 + 3 + 5 + 2 = 19 octeti pentru 16 caractere. Diferenta de 3 octeti vine din doua caractere: semnul muzical si litera cu semn diacritic.

(c) Cu ISO-8859-2, unde fiecare caracter are exact un octet si tabelul are numai 256 de casute:

  1. Recital, spatiile si vioar trec neatinse — sunt in primele 128 de coduri, identice cu ASCII in orice pagina de cod
  2. ă exista in ISO-8859-2 si se salveaza pe 1 octet; supravietuieste, dar numai daca cel care deschide fisierul foloseste tot ISO-8859-2. Daca deschide cu Windows-1252 sau cu UTF-8, acel octet inseamna altceva si apare text stalcit
  3. ♪ nu exista deloc in ISO-8859-2 — tabelul contine litere si semne de punctuatie, nu simboluri muzicale. La salvare este pierdut: in locul lui ramane, de regula, un semn de intrebare sau nimic. Pierderea este definitiva: din fisierul salvat nu mai poti reface semnul

(d) Recomandarea. Titlul se trimite intr-un fisier salvat cu UTF-8, iar la trimitere se spune explicit ce set de caractere a fost folosit — fisierul text simplu nu il retine si nu il declara nimanui. Daca tipografia raspunde ca lucreaza doar cu o pagina de cod veche, atunci semnul ♪ nu poate calatori ca text si trebuie pus in macheta ca element grafic, nu ca litera. Numele fisierului se scrie fara diacritice si fara spatii: recital-vioara.txt.

Ce ai invatat astazi

  • Textul nu se pastreaza in memorie ca litere, ci ca numere; setul de caractere este tabelul care leaga numarul de litera
  • 8 biti = 1 octet = 256 de valori posibile; ASCII foloseste numai 7 biti, deci 128 de coduri (0-127)
  • In ASCII: spatiu = 32, cifrele 48-57, majusculele 65-90, minusculele 97-122, iar litera mica = litera mare + 32
  • Paginile de cod pe 8 biti (ISO-8859-2, ISO-8859-16, Windows-1250) au umplut diferit ultimele 128 de casute — de aici textul stalcit (mojibake)
  • UNICODE da fiecarui caracter un code point unic, scris U+XXXX: ș = U+0219, ♪ = U+266A, 𝄞 = U+1D11E
  • UTF-8 scrie code point-ul pe 1-4 octeti: 1 pentru zona ASCII, 2 pentru diacriticele romanesti, 3 pentru semnele muzicale uzuale, 4 pentru pictograme
  • La salvarea unui .txt alegi setul de caractere: Writer → „Optiuni filtru ASCII", Word → „Conversie fisier" → „Alta codificare" → Unicode (UTF-8)

Vrei mai mult?

Fa singur experimentul care demonstreaza toata lectia. Scrie intr-un document un singur cuvant fara diacritice, vioara, si salveaza-l ca .txt cu UTF-8. Scrie apoi acelasi cuvant cu diacritica, vioară, si salveaza-l separat, tot cu UTF-8. Compara marimile celor doua fisiere in octeti (in File Explorer: clic dreapta > Proprietati). Diferenta trebuie sa fie de exact un octet — pentru ca ă se scrie pe doi octeti, iar a pe unul singur.

Intreaba-te: daca UTF-8 scrie unele caractere pe 1 octet si altele pe 4, cum stie programul care citeste fisierul unde se termina un caracter si unde incepe urmatorul? Nu exista niciun separator intre ele. Cauta raspunsul: primul octet al fiecarui caracter isi anunta lungimea prin bitii lui de la inceput.

In lumea reala: arhivele muzicale si teatrale digitizate in anii 2000 sunt pline de fise scrise cu pagini de cod diferite. Cand o biblioteca isi muta catalogul intr-un sistem nou, cea mai mare parte a muncii nu este mutarea fisierelor, ci ghicirea corecta a setului de caractere cu care a fost scris fiecare lot — un nume de compozitor citit gresit inseamna o inregistrare care nu mai poate fi gasita niciodata prin cautare.

Urmatoarea lectie

Continua cu Formatare profesionala: stiluri, indentari, tabulatori — dupa ce ai inteles cum sunt pastrate literele, treci la felul in care sunt asezate in pagina: stiluri aplicate unitar, indentari, tabulatori si aspectul profesional al unui program de spectacol sau al unei fise de portofoliu.

Continua →