Estoy realmente confundido con el codecs.open function
. Cuando hago:Escribir en el archivo UTF-8 en Python
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Me da el error
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Si hago:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
Trabaja muy bien.
Pregunta ¿por qué falla el primer método? ¿Y cómo inserto el bom?
Si el segundo método es la forma correcta de hacerlo, ¿qué sentido tiene usar codecs.open(filename, "w", "utf-8")
?
No utilice una lista de materiales en UTF-8. *** Por favor. *** – tchrist
@tchrist Huh?Por qué no? –
@SalmanPK La BOM no es necesaria en UTF-8 y solo agrega complejidad (por ejemplo, no puede concatenar los archivos de BOM y obtener un texto válido). Ver [este Q & A] (http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom); no te pierdas el gran comentario bajo Q –