title: Byte Order Mark
text: # Byte Order Mark
  
  Il Byte Order Mark (BOM) è una piccola sequenza di byte che viene posizionata all'inizio di un flusso di dati di puro testo, tipicamente un file, per indicarne il tipo di codifica Unicode.
  
  I byte da usare nelle intestazioni delle varie codifiche sono i seguenti:
  
  | Codifica | BOM |
  | - | - |
  | UTF-32, big-endian | 00 00 FE FF |
  | UTF-32, little-endian | FF FE 00 00 |
  | UTF-16, big-endian | FE FF |
  | UTF-16, little-endian | FF FE |
  | UTF-8 | EF BB BF |
  
  ## Utilizzo del BOM
  
  Nel caso di un file o di un'altra sequenza di dati di testo e non binaria, il BOM permette di identificare subito se il testo è in formato Unicode e, in caso affermativo, il tipo esatto di codifica. Ciò è utile quando non si conosce a priori la codifica utilizzata; se invece in una particolare situazione questa è sempre nota i byte del BOM possono risultare inutili o addirittura dannosi.
  
  A seconda delle applicazioni l'uso del BOM può essere obbligatorio, opzionale, oppure potrebbe non essere supportato e causare errori. Un semplice programma come il Blocco note di Windows è in grado di riconoscere la codifica dei file di testo aperti in base al BOM e di mostrarli correttamente nascondendo all'utente i byte iniziali che compongono il BOM stesso.
  
  Un esempio in cui il BOM è sconsigliato è quello dei file PHP in cui la presenza del BOM comporta un output verso il browser impedendo l'utilizzo di session_start o l'invio di altri header.
  
  