Преобразование UTF-8 с спецификацией в UTF-8 без спецификации в Python

Два вопроса здесь. У меня есть набор файлов, которые обычно UTF-8 с спецификацией. Я хотел бы преобразовать их (в идеале на месте) в UTF-8 без спецификации. Кажется, чтоcodecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors) бы справиться с этим. Но я не вижу хороших примеров использования. Будет ли это лучший способ справиться с этим?

source files:
Tue Jan 17$ file brh-m-157.json 
brh-m-157.json: UTF-8 Unicode (with BOM) text

Кроме того, было бы идеально, если бы мы могли обрабатывать различные входные кодировки без явного знания (см. ASCII и UTF-16). Кажется, что все это должно быть осуществимо. Есть ли решение, которое может принимать любую известную кодировку и вывод Python как UTF-8 без спецификации?

редактировать 1 предложил soln снизу (спасибо!)

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)

Это дает мне следующую ошибку:

IOError: [Errno 9] Bad file descriptor
Newsflash

В комментариях мне говорят, что ошибка в том, что я открываю файл с режимом «rw» вместо «r +» / «r + b», поэтому я должен в конечном итоге отредактировать свой вопрос и удалить решенную часть.

Ответы на вопрос(6)

Ваш ответ на вопрос