Converta UTF-8 com BOM para UTF-8 sem BOM em Python

Duas perguntas aqui. Eu tenho um conjunto de arquivos que geralmente são UTF-8 com BOM. Gostaria de convertê-los (idealmente no lugar) para UTF-8 sem BOM. Parece quecodecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors) lidaria com isso. Mas eu realmente não vejo bons exemplos de uso. Essa seria a melhor maneira de lidar com isso?

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

Além disso, seria ideal se pudéssemos lidar com diferentes codificações de entrada sem o conhecimento explícito (visto ASCII e UTF-16). Parece que tudo isso deve ser possível. Existe uma solução que possa receber qualquer codificação e saída Python conhecida como UTF-8 sem BOM?

edit 1 sol'n proposto a partir de baixo (obrigado!)

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)

Isto me dá o seguinte erro:

IOError: [Errno 9] Bad file descriptor
Newsflash

Me disseram nos comentários que o erro é abrir o arquivo com o modo 'rw' em vez de 'r +' / 'r + b'; portanto, devo reeditar minha pergunta e remover a parte resolvida.

questionAnswers(12)

yourAnswerToTheQuestion