Здесь два вопроса. У меня есть набор файлов, которые обычно являются UTF-8 с BOM. Я бы хотел конвертировать их (в идеале на место) в 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', поэтому я должен в конечном итоге изменить свой вопрос и удалить решенную часть.