Sono davvero confuso con lo codecs.open function
. Quando faccio:Scrittura su file UTF-8 in Python
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Mi dà l'errore
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Se lo faccio:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
Funziona benissimo.
Domanda perché il primo metodo fallisce? E come inserisco il bom?
Se il secondo metodo è il modo corretto di farlo, quale punto utilizzare codecs.open(filename, "w", "utf-8")
?
Non utilizzare una distinta in UTF-8. *** Per favore. *** – tchrist
@tchrist Huh?Perchè no? –
@SalmanPK BOM non è necessario in UTF-8 e aggiunge solo complessità (ad esempio non è possibile concatenare solo i file BOM e ottenere un testo valido). Vedi [questo Q & A] (http://stackoverflow.com/questions/2223882/whats-different-tra between-utf-8-and-utf-8-without-bom); non perdetevi il grande commento sotto Q –