“UTF-8” è l’ab­bre­via­zio­ne di “8-Bit UCS Tran­sfor­ma­tion Format” e rap­pre­sen­ta la codifica di caratteri più diffusa nel World Wide Web. Lo standard in­ter­na­zio­na­le Unicode copre tutti i caratteri lin­gui­sti­ci e gli elementi di testo di (quasi) tutte le lingue del mondo per l’ela­bo­ra­zio­ne EDP. La codifica UTF-8 gioca un ruolo fon­da­men­ta­le nel set di caratteri Unicode.

Crea il tuo sito web
Scopri le nuovi funzioni IA di MyWebsite
  • Editor facile e intuitivo con supporto IA
  • Immagini e testi d'effetto in pochi secondi
  • Dominio, indirizzo e-mail e cer­ti­fi­ca­to SSL inclusi

Evo­lu­zio­ne della codifica UTF-8

UTF-8 è una codifica di caratteri che assegna a ogni carattere Unicode esistente una specifica sequenza di bit, che può essere letta anche come numero binario. Questo significa che UTF-8 assegna un numero binario fisso a ogni lettera, numero e simbolo di un numero crescente di lingue. Le or­ga­niz­za­zio­ni in­ter­na­zio­na­li, che sono par­ti­co­lar­men­te in­te­res­sa­te agli standard internet e di con­se­guen­za alla loro uni­for­ma­zio­ne, stanno lavorando per rendere UTF-8 il modello di codifica per ec­cel­len­za. Alcuni esempi sono il W3C e l’Internet En­gi­nee­ring Task Force (IETF). Già nel 2009, infatti, la maggior parte dei siti web nel mondo uti­liz­za­va la codifica UTF-8. Secondo un rapporto del W3Techs dell’aprile 2025, il 98,6% di tutti i siti web esistenti utilizza questa codifica di caratteri.

Problemi prima dell’in­tro­du­zio­ne di UTF-8

Regioni diverse con lingue e sistemi di scrittura im­pa­ren­ta­ti avevano svi­lup­pa­to ciascuna i propri standard di codifica per sod­di­sfa­re esigenze diverse. Nei paesi anglofoni, ad esempio, era suf­fi­cien­te la codifica ASCII, la cui struttura consente l’as­se­gna­zio­ne di 128 caratteri a una sequenza di caratteri leggibile al computer. Le scritture asiatiche o l’alfabeto cirillico uti­liz­za­no, tuttavia, caratteri singoli più univoci. Anche le dieresi tedesche (come la lettera ä) mancano nell’ASCII.

Esisteva la pos­si­bi­li­tà che le as­se­gna­zio­ni di codifiche diverse si so­vrap­po­nes­se­ro. Questo significa che, ad esempio, un documento scritto in russo poteva apparire su un computer americano con le lettere latine assegnate a questo sistema invece che in lettere ci­ril­li­che. Risultati di questo genere hanno ov­via­men­te reso la co­mu­ni­ca­zio­ne in­ter­na­zio­na­le molto più difficile.

Nascita di UTF-8

Per risolvere questo problema Joseph D. Becker sviluppò il set di caratteri uni­ver­sa­le Unicode per Xerox tra il 1988 e il 1991. Dal 1992 anche il consorzio in­du­stria­le in­for­ma­ti­co X/Open era alla ricerca di un sistema per so­sti­tui­re ASCII ed espandere il suo re­per­to­rio di caratteri. Un requisito im­por­tan­te era che tale codifica fosse com­pa­ti­bi­le con ASCII. Tuttavia, la prima codifica, chiamata UCS-2, non sod­di­sfa­ce­va questo requisito e si limitava a con­ver­ti­re il valore numerico dei caratteri in valori a 16 bit.

L’obiettivo di com­pa­ti­bi­li­tà non fu raggiunto nemmeno dalla codifica UTF-1, dato che le as­se­gna­zio­ni Unicode si so­vrap­po­ne­va­no in parte con quelle dei caratteri ASCII esistenti. Un server impostato su ASCII, pertanto, poteva fa­cil­men­te produrre caratteri errati. Questo rap­pre­sen­ta­va un problema con­si­de­re­vo­le, dato che all’epoca la maggior parte dei computer anglofoni lavorava con questa codifica. Il tentativo suc­ces­si­vo fu quello del File System Safe UCS Tran­sfor­ma­tion Format (FSS-UTF) di Dave Prosser, che risolse il problema della so­vrap­po­si­zio­ne con i caratteri ASCII.

Nell’agosto dello stesso anno il progetto si diffuse tra gli esperti. All’epoca nei Bell Labs, noti per i numerosi premi Nobel, la­vo­ra­va­no al sistema operativo Plan 9 i co­fon­da­to­ri di Unix Ken Thompson e Rob Pike, che ripresero l’idea di Prosser, svi­lup­pan­do una codifica in grado di auto-sin­cro­niz­zar­si (ogni carattere indica di quanti bit ha bisogno) e sta­bi­len­do regole per l’as­se­gna­zio­ne di caratteri che potevano essere rap­pre­sen­ta­ti in modo diverso nel codice (esempio: “ä” come carattere proprio o “a+¨”). Hanno sfruttato questa codifica con successo per il loro sistema operativo, pre­sen­tan­do­la in seguito ai re­spon­sa­bi­li. Nacque così la codifica FSS-UTF, oggi nota come “UTF-8”.

UTF-8 nel set di caratteri Unicode: uno standard per tutte le lingue

La codifica UTF-8 è un formato di con­ver­sio­ne ap­par­te­nen­te allo standard Unicode. Il set di caratteri Unicode viene definito a grandi linee nello standard in­ter­na­zio­na­le ISO 10646, che lo indica con il termine “Universal Coded Character Set”. Per garantire più praticità nell’uso, gli svi­lup­pa­to­ri dello standard hanno deciso di limitarne alcuni parametri. Lo standard ha lo scopo di garantire una codifica di caratteri ed elementi di testo uniforme e com­pa­ti­bi­le a livello in­ter­na­zio­na­le. Quando fu in­tro­dot­to, nel 1991, lo standard Unicode definì 24 moderni sistemi di scrittura e simboli di valuta per l’ela­bo­ra­zio­ne dei dati. Nel giugno 2024 erano 168.

Esistono diversi formati di con­ver­sio­ne Unicode, i co­sid­det­ti “UTF”, che ri­pro­du­co­no gli 1.114.112 punti di codice possibili. I formati che hanno prevalso sono tre: UTF-8, UTF-16 e UTF-32. Anche altre codifiche come UTF-7 o SCSU hanno i loro vantaggi, ma non si sono mai affermate.

Unicode è diviso in 17 piani, ognuno dei quali contiene 65.536 caratteri. Ogni piano è composto da 16 colonne e 16 righe. Il piano zero, chiamato “Basic Mul­ti­lin­gual Plane”, copre la maggior parte dei sistemi di scrittura at­tual­men­te uti­liz­za­ti nel mondo, così come i segni di pun­teg­gia­tu­ra, i caratteri di controllo e i simboli. At­tual­men­te sono in uso altri sei piani:

  • Sup­ple­men­ta­ry Mul­ti­lin­gual Plane (piano 1): sistemi di scrittura antichi, caratteri usati raramente
  • Sup­ple­men­ta­ry Ideo­gra­phic Plane (piano 2): caratteri ideo­gra­fi­ci rari CJK (“cinese, giap­po­ne­se, coreano”)
  • Tertiary Ideo­gra­phic Plane (piano 3): a partire dalla versione Unicode 15.1, qui vengono co­di­fi­ca­ti ulteriori caratteri CJK.
  • Sup­ple­men­ta­ry Special-Purpose Plane (piano 14): singoli caratteri di controllo
  • Sup­ple­men­ta­ry Private Use Area - A (piano 15): uso privato
  • Sup­ple­men­ta­ry Private Use Area - B (piano 16): uso privato

Le codifiche UTF con­sen­to­no di accedere a tutti i caratteri Unicode. Grazie alle ri­spet­ti­ve ca­rat­te­ri­sti­che i singoli piani possono essere sfruttati per contesti diversi.

Le al­ter­na­ti­ve: UTF-32 e UTF-16

UTF-32 utilizza sempre sequenze di numeri a 32 bit, ovvero 4 byte. La sem­pli­ci­tà della sua struttura migliora la leg­gi­bi­li­tà del formato. Nelle lingue che uti­liz­za­no prin­ci­pal­men­te l’alfabeto latino e quindi solo i primi 128 caratteri, questa codifica occupa molta più memoria del ne­ces­sa­rio (4 byte invece di 1).

UTF-16 si è affermato come formato di vi­sua­liz­za­zio­ne in sistemi operativi come Apple macOS e Microsoft Windows e viene uti­liz­za­to anche in molti framework di sviluppo software. È una delle codifiche UTF più vecchie ancora in uso. La sua struttura è par­ti­co­lar­men­te adatta per la codifica di caratteri in lingua non latina, perché occupa poco spazio in memoria. La maggior parte dei caratteri può essere rap­pre­sen­ta­ta con 2 byte (16 bit). Solo in caso di caratteri rari la lunghezza può rad­dop­pia­re fino a 4 byte.

Ef­fi­cien­te e scalabile: UTF-8

UTF-8 è co­sti­tui­to da un massimo di quattro sequenze di bit, ciascuna delle quali è composta da 8 bit. Il pre­de­ces­so­re ASCII invece usa sequenze di bit composte da 7 bit. Entrambe le codifiche de­fi­ni­sco­no i primi 128 caratteri co­di­fi­ca­ti in modo equi­va­len­te. Ciascuno dei caratteri pro­ve­nien­ti prin­ci­pal­men­te dal mondo anglofono è dunque coperto da un byte. Per le lingue con alfabeto latino, questo formato ga­ran­ti­sce un utilizzo più ef­fi­cien­te dello spazio di ar­chi­via­zio­ne. I sistemi operativi Unix e Linux lo uti­liz­za­no in­ter­na­men­te. La codifica UTF-8 svolge il suo ruolo più im­por­tan­te, tuttavia, in relazione alle ap­pli­ca­zio­ni internet, in par­ti­co­la­re nella rap­pre­sen­ta­zio­ne di testi sul World Wide Web o nella posta elet­tro­ni­ca.

Grazie alla struttura auto-sin­cro­niz­zan­te, la leg­gi­bi­li­tà viene mantenuta no­no­stan­te la lunghezza variabile per carattere. Senza re­stri­zio­ni Unicode, con UTF-8 sarebbero possibili 4.398.046.511.104 as­se­gna­zio­ni di caratteri. A causa della li­mi­ta­zio­ne a 4 byte, sono ef­fet­ti­va­men­te 221, il che è più che suf­fi­cien­te. Anche l’area Unicode ha ancora piani vuoti per molti altri sistemi di scrittura.

L’as­se­gna­zio­ne esatta evita so­vrap­po­si­zio­ni tra punti di codice, che in passato hanno osta­co­la­to la co­mu­ni­ca­zio­ne. Anche UTF-16 e UTF-32 ga­ran­ti­sco­no un’as­se­gna­zio­ne esatta, ma UTF-8 utilizza lo spazio di ar­chi­via­zio­ne in modo par­ti­co­lar­men­te ef­fi­cien­te per il sistema di scrittura latino ed è pro­get­ta­to per con­sen­ti­re la coe­si­sten­za semplice e la copertura di diversi sistemi di scrittura, per­met­ten­do­ne la vi­sua­liz­za­zio­ne si­mul­ta­nea e sensata all’interno di un campo di testo senza problemi di com­pa­ti­bi­li­tà.

Nozioni di base: codifica e com­po­si­zio­ne di UTF-8

La codifica UTF-8 offre diversi vantaggi come la re­tro­com­pa­ti­bi­li­tà con ASCII e la sua struttura auto-sin­cro­niz­zan­te che facilita alle svi­lup­pa­tri­ci e agli svi­lup­pa­to­ri l’iden­ti­fi­ca­zio­ne di fonti di errore anche in un secondo momento. UTF utilizza solo 1 byte per ciascuno dei caratteri ASCII. Il numero totale di sequenze di bit può essere ri­co­no­sciu­to dalle prime cifre del numero binario. Poiché il codice ASCII è composto solo da 7 bit, la prima cifra è 0. Lo 0 occupa lo spazio di ar­chi­via­zio­ne cor­ri­spon­den­te a un byte completo e segnala l’inizio di una sequenza senza byte suc­ces­si­vi. Se co­di­fi­cas­si­mo il nome “UTF-8” come numero binario con la codifica UTF-8, questo ap­pa­ri­reb­be come segue:

Carattere U T F - 8
UTF-8, binario 01010101 01010100 01000110 00101101 00111000
Punto di codice Unicode, esa­de­ci­ma­le U+0055 U+0054 U+0046 U+002D U+0038

La codifica UTF-8 assegna i caratteri ASCII, come quelli usati nella tabella, a una singola sequenza di bit. Tutti i caratteri seguenti e simboli all’interno dello standard Unicode sono composti da due a quattro sequenze a 8 bit. La prima sequenza è lo start byte, o byte iniziale, le sequenze suc­ces­si­ve sono invece i byte suc­ces­si­vi. Gli start byte con byte suc­ces­si­vi iniziano sempre con 11. I byte suc­ces­si­vi, invece, iniziano sempre con 10. Se cerchi ma­nual­men­te un de­ter­mi­na­to punto nel codice, puoi dunque ri­co­no­sce­re l’inizio di un carattere co­di­fi­ca­to dai marcatori 0 e 11. Il primo carattere stam­pa­bi­le a più byte è il punto escla­ma­ti­vo invertito:

Carattere ¡
UTF-8, binario 11000010 10100001
Punto di codice Unicode, esa­de­ci­ma­le U+00A1

La codifica del prefisso impedisce che all’interno di una sequenza di byte venga co­di­fi­ca­to un altro carattere. Se un flusso di byte inizia nel mezzo di un documento, il computer vi­sua­liz­za comunque cor­ret­ta­men­te i caratteri leggibili, poiché quelli in­com­ple­ti non vengono rap­pre­sen­ta­ti affatto. Se cerchi l’inizio di un carattere, tenendo a mente il limite dei 4 byte, devi tornare indietro in qualsiasi punto di un massimo di tre sequenze di byte per trovare quello iniziale.

Un altro elemento im­por­tan­te a livello strut­tu­ra­le è che la quantità di 1 all’inizio dello start byte indica la lunghezza della sequenza di byte:

  • 110xxxxx sta per 2 byte
  • 1110xxxx sta per 3 byte
  • 11110xxxsta per 4 byte

In Unicode il valore di byte assegnato cor­ri­spon­de al numero del carattere, con­sen­ten­do un ordine lessicale. Tuttavia, ci sono delle lacune. L’in­ter­val­lo Unicode da U+007F a U+009F include numeri di controllo non visibili. In questo in­ter­val­lo lo standard UTF-8 non assegna caratteri stam­pa­bi­li, ma solo comandi.

La codifica UTF-8 può, come accennato sopra, unire teo­ri­ca­men­te fino a otto sequenze di byte, ma Unicode prescrive una lunghezza massima di 4 byte. Di con­se­guen­za, le sequenze di byte composte da 5 o più byte non sono valide per im­po­sta­zio­ne pre­de­fi­ni­ta. D’altra parte, questa li­mi­ta­zio­ne riflette l’obiettivo di rap­pre­sen­ta­re il codice in modo più compatto, ovvero nella maniera più ef­fi­cien­te, in termini di spazio di ar­chi­via­zio­ne, e più strut­tu­ra­ta possibile.

Una regola di base nell’utilizzo di UTF-8 prevede la pre­di­le­zio­ne della codifica più breve possibile.

N.B.

Questa regola è il motivo per cui le sequenze di byte che iniziano con 192 e 193 sono con­si­de­ra­te non valide. Infatti, rap­pre­sen­ta­no po­ten­zial­men­te caratteri nell’ambito ASCII (0–127) in 2 byte, che sono già co­di­fi­ca­ti in 1 byte.

Tuttavia, alcuni caratteri hanno più codifiche equi­va­len­ti. La lettera ä, ad esempio, viene co­di­fi­ca­ta uti­liz­zan­do 2 byte: 11000011 10100100. Teo­ri­ca­men­te si po­treb­be­ro combinare i punti di codice della lettera “a” (01100001) e del carattere di dieresi “ ¨” (11001100 10001000) per rap­pre­sen­ta­re la “ä”: 01100001 11001100 10001000. Qui viene uti­liz­za­ta la co­sid­det­ta forma di nor­ma­liz­za­zio­ne Unicode NFD, in cui i caratteri vengono de­com­po­sti ca­no­ni­ca­men­te. Entrambe le codifiche mostrate portano allo stesso risultato esatto (cioè “ä”) e sono quindi ca­no­ni­ca­men­te equi­va­len­ti*.

N.B.

Le nor­ma­liz­za­zio­ni servono per unificare le diverse rap­pre­sen­ta­zio­ni Unicode dello stesso carattere. Qui è im­por­tan­te l’equi­va­len­za canonica che indica che due stringhe possono essere co­di­fi­ca­te in modo diverso, ma hanno lo stesso si­gni­fi­ca­to e la stessa rap­pre­sen­ta­zio­ne. L’equi­va­len­za com­pa­ti­bi­le permette invece stringhe che dif­fe­ri­sco­no nel formato o nello stile, ma sono uguali nel contenuto. Le forme di nor­ma­liz­za­zio­ne Unicode (ad esempio NFC, NFD, NFKC, NFKD) usano questi concetti per stan­dar­diz­za­re i testi. Così si ga­ran­ti­sce che i confronti, le clas­si­fi­ca­zio­ni e le ricerche fun­zio­ni­no in modo coerente e af­fi­da­bi­le.

Alcuni in­ter­val­li di valori Unicode non sono stati definiti per UTF-8 perché restino a di­spo­si­zio­ne dei surrogati UTF-16. La pa­no­ra­mi­ca mostra quali byte in UTF-8, nello standard Unicode, sono validi secondo l’Internet En­gi­nee­ring Task Force (IETF) (gli in­ter­val­li con­tras­se­gna­ti in verde sono byte validi, quelli con­tras­se­gna­ti in arancione non sono validi).

Immagine: Tabella: intervalli di valori UTF-8
La tabella fornisce una pa­no­ra­mi­ca dei valori UTF-8 validi.

Con­ver­sio­ne dal sistema esa­de­ci­ma­le Unicode a quello binario UTF-8

A dif­fe­ren­za degli umani che usano un sistema decimale per co­mu­ni­ca­re, i computer uti­liz­za­no esclu­si­va­men­te numeri binari per co­di­fi­ca­re le in­for­ma­zio­ni. Un punto di incontro tra queste due forme è il sistema esa­de­ci­ma­le, che consente di rap­pre­sen­ta­re le lunghe sequenze di bit in modo più compatto. Questo sistema utilizza le cifre da 0 a 9 e le lettere da A a F e rap­pre­sen­ta i numeri in base 16. Come quarta potenza di 2, il sistema esa­de­ci­ma­le è più adatto del sistema decimale per raf­fi­gu­ra­re in­ter­val­li di byte a otto cifre.

Una cifra esa­de­ci­ma­le equivale a una sequenza di quattro bit (“nibble”) all’interno dell’ottetto. Questo significa che sono suf­fi­cien­ti appena due cifre esa­de­ci­ma­li per rap­pre­sen­ta­re un byte che nel sistema binario ri­chie­de­reb­be ben otto cifre. Unicode utilizza il sistema esa­de­ci­ma­le per de­scri­ve­re la posizione di un carattere all’interno del proprio sistema, da cui è possibile calcolare il numero binario e quindi il punto di codice UTF-8.

In­nan­zi­tut­to, il numero esa­de­ci­ma­le deve essere con­ver­ti­to in numero binario. Suc­ces­si­va­men­te, i punti di codice vanno adattati alla struttura della codifica UTF-8. La seguente pa­no­ra­mi­ca evidenzia quanti punti di codice rientrano in una sequenza di byte e che tipo di struttura cor­ri­spon­de a quale in­ter­val­lo di valori Unicode. Puoi uti­liz­zar­la per fa­ci­li­ta­re la strut­tu­ra­zio­ne.

Di­men­sio­ne in byte Bit liberi Primo punto di codice Unicode Ultimo punto di codice Unicode Start byte / byte 1 Byte suc­ces­si­vo 2 Byte suc­ces­si­vo 3 Byte suc­ces­si­vo 4
1 7 U+0000 U+007F 0xxxxxxx
2 11 U+0080 U+07FF 110xxxxx 10xxxxxx
3 16 U+0800 U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
4 21 U+10000 U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Secondo l’ordine lessicale uti­liz­za­to per la nu­me­ra­zio­ne dei punti di codice Unicode e dei numeri binari UTF-8, per ogni in­ter­val­lo di codice è possibile presumere un dato numero di byte. All’interno dell’in­ter­val­lo U+0800 e U+FFFF, la codifica UTF-8 utilizza quindi 3 byte. I bit di­spo­ni­bi­li per rap­pre­sen­ta­re il punto di codice di un simbolo sono 16. Un numero binario calcolato viene assegnato nello schema UTF-8 da destra a sinistra, riem­pien­do gli spazi vuoti a sinistra con zeri.

Esempio di calcolo:

Il carattere ᅢ (Hangul Junseong, Ä) cor­ri­spon­de in Unicode a U+1162. Per calcolare il numero binario converti in­nan­zi­tut­to il numero esa­de­ci­ma­le in un numero decimale. Ogni cifra del numero cor­ri­spon­de alla ri­spet­ti­va potenza di 16. La cifra a destra ha il valore più basso con 160 = 1. Partendo da destra, mol­ti­pli­ca il valore numerico della cifra per la potenza. Poi somma i risultati.

Immagine: Esempio di calcolo: conversione da numero esadecimale a decimale
Prima di tutto converti il numero esa­de­ci­ma­le in uno decimale.

Il numero decimale calcolato è 4450. Ora converti questo numero in un numero binario. Dividi in­nan­zi­tut­to il numero per 2 con resto fino a quando il risultato è 0. Il resto, scritto da destra a sinistra, è il numero binario.

Immagine: Esempio di calcolo: conversione di un numero decimale in uno binario
Nel passaggio suc­ces­si­vo converti il numero decimale in uno binario.

Il codice UTF-8 prevede 3 byte per il punto di codice U+1162, perché il punto di codice si trova nell’in­ter­val­lo tra U+0800 e U+FFFF. Lo start byte inizia quindi con 1110. I due byte suc­ces­si­vi iniziano ciascuno con 10. Nei bit liberi, che non spe­ci­fi­ca­no la struttura, aggiungi il numero binario da destra a sinistra. Riempi le restanti posizioni di bit nel byte iniziale con 0 fino a quando l’ottetto non è completo. Si ottiene dunque la seguente codifica UTF-8:

11100001 10000101 10100010 (il punto di codice inserito è in grassetto)

Carattere Punto di codice Unicode, esa­de­ci­ma­le Decimale Numero binario UTF-8
U+1162 Numero decimale 4450 1000101100010 111000011000010110100010

UTF-8 nell’editor

Sebbene UTF-8 sia lo standard più diffuso su internet, i semplici editor di testo non salvano ne­ces­sa­ria­men­te per im­po­sta­zio­ne pre­de­fi­ni­ta i testi in questo formato. Microsoft Notepad utilizza, ad esempio, per im­po­sta­zio­ne pre­de­fi­ni­ta una codifica chiamata “ANSI” (che cela la codifica “Windows-1252” basata su ASCII. Se desideri con­ver­ti­re un file di testo da Microsoft Word in UTF-8, ad esempio per vi­sua­liz­za­re diversi sistemi di scrittura, procedi come segue: vai su ”Salva con nome” e seleziona l’**opzione “Testo normale ” nel campo Salva come.

Immagine: Screenshot per salvare il documento su Word
Anche su Microsoft Word è possibile salvare documenti come testo semplice.

Si apre la finestra di pop-up “Con­ver­sio­ne file”. In “Codifica testo”, seleziona “Altra codifica” e poi dall’elenco “Unicode (UTF-8)”.Nel menu a discesa “Termina righe con” seleziona “Ritorno a capo / Nuova riga” o “CR/LF”. Con questi semplici passaggi puoi con­ver­ti­re un file in Unicode con UTF-8.

Immagine: Screenshot: conversione file su Word
Oltre a UTF-8, nella finestra “Con­ver­sio­ne file” hai a di­spo­si­zio­ne Unicode (UTF-16) con e senza Big-Endian, ASCII e molte altre codifiche tra cui scegliere.

Se apri un file di testo non con­tras­se­gna­to del quale non sai quale codifica sia stata usata si possono ve­ri­fi­ca­re problemi durante la modifica. In questi casi in Unicode viene uti­liz­za­to il Byte Order Mark (BOM), un carattere in­vi­si­bi­le che indica se il documento è in formatoBig-Endian o Little-Endian. Se un programma de­co­di­fi­ca un file in UTF-16 Little-Endian usando UTF-16 Big-Endian, il testo viene vi­sua­liz­za­to in modo errato.

I documenti basati sul set di caratteri UTF-8 non pre­sen­ta­no questo problema, poiché l’ordine dei byte viene sempre letto come una sequenza di byte Big-Endian. In questo caso il BOM serve uni­ca­men­te come in­di­ca­zio­ne della codifica in UTF-8.

N.B.

In alcune codifiche (UTF-16 e UTF-32) i caratteri rap­pre­sen­ta­ti da più di un byte possono avere il byte più si­gni­fi­ca­ti­vo nella prima posizione anteriore (sinistra) o nell’ultima posizione po­ste­rio­re (destra). Se il byte più si­gni­fi­ca­ti­vo (“Most Si­gni­fi­cant Byte”, MSB) si trova nella parte anteriore, la codifica viene definita “Big-Endian”, se l’MSB si trova invece nella parte po­ste­rio­re, viene definita “Little-Endian”.

Il BOM viene po­si­zio­na­to prima di un flusso di dati o all’inizio di un file. Questo marcatore ha la priorità su tutte le altre istru­zio­ni, compreso l’header HTTP. Il BOM serve come una sorta di in­di­ca­to­re delle codifiche Unicode e cor­ri­spon­de al punto di codice U+FEFF. La rap­pre­sen­ta­zio­ne in codice del BOM cambia a seconda della codifica uti­liz­za­ta.

Formato di codifica BOM, punto di codice: U+FEFF (hex.)
UTF-8 EF BB BF
UTF-16 Big-Endian FE FF
UTF-16 Little-Endian FF FE
UTF-32 Big-Endian 00 00 FE FF
UTF-32 Little-Endian FF FE 00 00

Il Byte Order Mark non viene uti­liz­za­to se è espli­ci­ta­men­te vietato dal pro­to­col­lo o se i tuoi dati sono già assegnati a una de­ter­mi­na­ta tipologia. In base al pro­to­col­lo alcuni programmi prevedono caratteri ASCII. Dato che la codifica UTF-8 è re­tro­com­pa­ti­bi­le con quella ASCII e il suo ordine di byte è fisso, non è ne­ces­sa­rio uti­liz­za­re il BOM. Unicode rac­co­man­da infatti di non uti­liz­za­re il BOM con UTF-8. Tuttavia, poiché i codici più vecchi possono pre­sen­ta­re dei BOM che possono causare problemi, è im­por­tan­te iden­ti­fi­car­li come tali.

Sito web con dominio
Crea il tuo sito web per­so­na­liz­za­to

MyWebsite Now Starter è lo strumento pensato per i prin­ci­pian­ti che vogliono creare un sito web in modo intuitivo. Include dominio e indirizzo e-mail.

Vai al menu prin­ci­pa­le