Преобразование 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 предложил решение снизу (спасибо!)

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', поэтому в конечном итоге мне придется отредактировать свой вопрос и удалить решенную часть.

67
задан tzot 30 January 2012 в 21:15
поделиться