Здесь два вопроса. У меня есть набор файлов, которые обычно 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
В комментариях мне говорят, что ошибка заключается в том, что я открываю файл в режиме 'rw' вместо 'r +' / 'r + b', поэтому в конечном итоге мне придется отредактировать свой вопрос и удалить решенную часть.