Naprawdę jestem zdezorientowany z codecs.open function
. Kiedy zrobić:Zapisywanie do pliku UTF-8 w Pythonie
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Daje mi błąd
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Jeśli zrobić:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
To działa dobrze.
Pytanie dlaczego pierwsza metoda zawodzi? A jak wstawić bom?
Jeśli druga metoda jest prawidłowym sposobem wykonania, jaki jest cel używania codecs.open(filename, "w", "utf-8")
?
Nie używaj BOM UTF-8. *** Proszę. *** – tchrist
@tchrist Huh?Dlaczego nie? –
@SalmanPK BOM nie jest potrzebny w UTF-8 i tylko dodaje złożoność (np. Nie można po prostu połączyć zbiorów LM i uzyskać poprawnego tekstu). Zobacz [ten Q & A] (http://stackoverflow.com/questions/2223882/whats-different-weenween-utf-8-and-utf-8-without-bom); nie przegap wielkiego komentarza pod Q –