Uso dei contrassegni di ordine byte

Prefisso sempre un file di testo normale Unicode con un contrassegno di ordine byte, che informa un'applicazione che riceve il file che il file è ordinato da byte. I contrassegni di ordine di byte disponibili sono elencati nella tabella seguente. Poiché il testo normale Unicode è una sequenza di valori di codice a 16 bit, è sensibile all'ordinamento di byte usato quando il testo viene scritto.

Nota

Un contrassegno di ordine di byte non è un carattere di controllo che seleziona l'ordine di byte del testo.

 

Indicatore dell'ordine dei byte Descrizione
EF BB BF UTF-8
FF FE UTF-16, piccolo endian
FE FF UTF-16, big endian
FF FE 00 00 UTF-32, piccolo endian
00 00 FE FF UTF-32, big-endian

 

Nota

Microsoft usa l'ordine di byte UTF-16, little endian.

 

Idealmente, tutto il testo Unicode segue solo un set di regole di ordinamento di byte. Ciò non è possibile, tuttavia, perché i microprocessori differiscono nel posizionamento del byte meno significativo. I processori Intel e MIPS posizionano prima il byte meno significativo, mentre i processori Motorola (e tutti i file Unicode inverso byte) lo posizionano per ultimo. Con un solo set di regole di ordinamento di byte, gli utenti di un tipo di microprocessore sono costretti a scambiare l'ordine di byte ogni volta che un file di testo normale viene letto o scritto in, anche se il file non viene mai trasferito a un altro sistema operativo basato su un microprocessore diverso.

Il posto preferito per specificare l'ordine di byte è in un'intestazione di file, ma i file di testo non hanno intestazioni. Di conseguenza, Unicode ha definito un carattere (U+FEFF) e un noncharacter (U+FFFE) come contrassegni di ordine di byte. Sono immagini di byte mirroring tra loro.

Poiché la sequenza U+FEFF è estremamente rara all'inizio di un normale file di testo non Unicode, può fungere da marcatore implicito o firma per identificare il file come file Unicode. Le applicazioni che leggeno sia i file di testo Unicode che non Unicode devono usare la presenza di questa sequenza come indicatore che il file è più probabile un file Unicode. Confrontare questa tecnica con l'indicatore EOF MS-DOS per terminare i file di testo.

Quando un'applicazione trova U+FEFF all'inizio di un file di testo, in genere elabora il file come file Unicode, anche se può eseguire ulteriori controlli euristici per la verifica. Tale controllo può essere semplice come il test per scoprire se la variazione dei byte a basso ordine è molto superiore rispetto alla variazione dei byte ad ordine elevato. Ad esempio, se il testo ASCII viene convertito in testo Unicode, ogni secondo byte è 0. Inoltre, il controllo sia per i caratteri restituiti linefeed che a capo (U+000A e U+000D) e per dimensioni di file pari o dispari può fornire un indicatore forte della natura del file.

Quando un'applicazione trova U+FFFE all'inizio di un file di testo, lo interpreta per indicare che il file è un file Unicode inverso di byte. L'applicazione può scambiare l'ordine dei byte o avvisare l'utente che si è verificato un errore.

Poiché il carattere di contrassegno dell'ordine di byte Unicode non viene trovato in alcuna tabella codici, scompare se i dati vengono convertiti in ANSI. A differenza di altri caratteri Unicode, non viene sostituito da un carattere predefinito quando viene convertito. Se un contrassegno di ordine di byte viene trovato al centro di un file, non viene interpretato come carattere Unicode e non ha alcun effetto sull'output del testo.

Nota

Il valore Unicode U+FFFF È illegale nei file di testo normale e non può essere passato tra le applicazioni. È riservato per l'uso privato di un'applicazione.

 

Uso di caratteri speciali in Unicode