Ich bin wirklich mit der codecs.open function
verwechselt. Wenn ich tun:Schreiben in UTF-8-Datei in Python
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Es gibt mir den Fehler
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Wenn ich tun:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
Es funktioniert gut.
Frage ist warum schlägt die erste Methode fehl? Und wie füge ich den bom ein?
Wenn die zweite Methode der richtige Weg ist, was ist der Sinn der Verwendung von codecs.open(filename, "w", "utf-8")
?
konvertieren Sie keine BOM in 8 UTF-verwenden. *** Bitte. *** – tchrist
@tchrist Huh?Warum nicht? –
@SalmanPK BOM wird in UTF-8 nicht benötigt und erhöht nur die Komplexität (z. B. können Sie nicht nur BOM-Dateien verketten und mit gültigem Text versehen). Siehe [diese Q & A] (http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom); Verpassen Sie nicht den großen Kommentar unter Q –