I file CSV UTF-8 devono contenere una distinta componenti (contrassegno ordine byte)?

37

Il nostro software line-of-business consente all'utente di salvare determinati dati come CSV . Dato che ci sono molti formati diversi (tutti chiamati "CSV") in uso in natura, ci stiamo legando per decidere come dovrebbe apparire il "formato predefinito".

  • Per quanto riguarda i separatori di linea / campo e l'escape, esiste uno standard che possiamo usare: RFC 4180 .

  • Per quanto riguarda la codifica del testo, UTF-8 sembra essere emerso nell'ultimo decennio come " formato di testo predefinito ", quindi lo useremo.

L'unica domanda lasciata aperta è: dovremmo aggiungere una BOM all'inizio o no? Ho letto più opinioni e pro / contro sull'uso delle BOM in generale, ma c'è una raccomandazione "ufficiale" o almeno un qualche tipo di consenso da parte della comunità sull'uso delle BOM nei file CSV?

    
posta Heinzi 18.06.2018 - 09:36
fonte

2 risposte

55

Non per UTF-8 , ma vedi i vari avvertimenti nei commenti.

Non è necessario (UTF-8 non ha ordine byte) a differenza di UTF-16/32 e non è raccomandato in standard Unicode . È anche piuttosto raro vedere UTF-8 con BOM "in the wild", quindi, a meno che tu non abbia un valido motivo (ad es. Come commentato, lavorerai con il software che si aspetta il BOM), consiglierei l'approccio BOM-less .

Wikipedia menziona alcuni software principalmente Microsoft che costringe e si aspetta una distinta base, ma a meno che tu non stia lavorando con loro, don non usarlo.

    
risposta data 18.06.2018 - 09:50
fonte
8

Non esiste ancora una convenzione diffusa AFAIK, anche se certamente UTF-8 è ora generalmente accettato.

Il BOM è un artefatto terribile:

È invisibile (spazio a larghezza zero).

Alcuni software potrebbero rompersi sul nome della prima colonna che non contiene solo lettere, ma quella strana BOM in primo piano.

La riga di intestazione potrebbe essere copiata per le righe di valore che corrompono il primo valore.

È necessario solo da alcuni software Windows per distinguere tra una delle codifiche ANSI utilizzate da quella macchina Windows locale e UTF-8. Blocco note, Excel.

Quindi la cosa triste è che uno dovrebbe supportare il BOM. Forse facoltativo.

Utilizza uno schema di denominazione per i file (...- utf8.txt, ...- utf8bom.txt).

In molti casi potremmo usare HTML come alternativa di esportazione. Questo consente di impostare la codifica nel file. Una caratteristica aggiuntiva è la colorazione di sfondo / primo piano di righe e celle. Che aumenta la qualità dell'esportazione.

    
risposta data 18.06.2018 - 13:17
fonte

Leggi altre domande sui tag