Convertir UTF-8 con BOM a UTF-8 sin BOM en Python
Dos preguntas aquí. Tengo un conjunto de archivos que generalmente son UTF-8 con BOM. Me gustaría convertirlos (idealmente en su lugar) a UTF-8 sin BOM. Parece quecodecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)
manejaría esto. Pero realmente no veo ningún buen ejemplo de uso. ¿Sería esta la mejor manera de manejar esto?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
Además, sería ideal si pudiéramos manejar diferentes codificaciones de entrada sin conocerlo explícitamente (visto ASCII y UTF-16). Parece que todo esto debería ser factible. ¿Existe una solución que pueda tomar cualquier codificación y salida Python conocida como UTF-8 sin BOM?
edit 1 propuesta de solución desde abajo (¡gracias!)
fp = open('brh-m-157.json','rw')
s = fp.read()
u = s.decode('utf-8-sig')
s = u.encode('utf-8')
print fp.encoding
fp.write(s)
Esto me da el siguiente error:
IOError: [Errno 9] Bad file descriptor
NewsflashEn los comentarios me dicen que el error es que abro el archivo con el modo 'rw' en lugar de 'r +' / 'r + b', por lo que eventualmente debería volver a editar mi pregunta y eliminar la parte resuelta.