Deux questions à ce sujet. J'ai un ensemble de fichiers qui sont généralement UTF-8 avec BOM. J'aimerais les convertir (idéalement en place) en UTF-8 sans nomenclature. Il semble que codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)
s'en chargerait. Mais je ne vois pas vraiment de bons exemples d'utilisation. Est-ce que c'est la meilleure façon de gérer cela ?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
De plus, il serait idéal que nous puissions gérer différents encodages d'entrée sans le savoir explicitement (comme ASCII et UTF-16). Il semble que tout cela soit faisable. Existe-t-il une solution capable de prendre n'importe quel encodage Python connu et de le restituer en UTF-8 sans BOM ?
modifier 1 proposition de sol'n par le bas (merci !)
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)
Cela me donne l'erreur suivante :
IOError: [Errno 9] Bad file descriptor
Flash info
On me dit dans les commentaires que l'erreur vient du fait que j'ouvre le fichier avec le mode 'rw' au lieu de 'r+'/'r+b', donc je devrais éventuellement rééditer ma question et supprimer la partie résolue.