Zwei Fragen hier. Ich habe eine Reihe von Dateien, die normalerweise UTF-8 mit Stückliste sind. Ich möchte sie (idealerweise vorhanden) ohne Stückliste in UTF-8 konvertieren. Es scheint, als codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors)würde man damit umgehen. Aber ich sehe keine wirklich guten Beispiele für die Verwendung. Wäre dies der beste Weg, um damit umzugehen?
source files:
Tue Jan 17$ file brh-m-157.json
brh-m-157.json: UTF-8 Unicode (with BOM) text
Es wäre auch ideal, wenn wir unterschiedliche Eingabecodierungen ohne explizites Wissen handhaben könnten (siehe ASCII und UTF-16). Es scheint, dass dies alles machbar sein sollte. Gibt es eine Lösung, die jede bekannte Python-Codierung und Ausgabe als UTF-8 ohne Stückliste verwenden kann?
1 vorgeschlagenen Sol'n von unten bearbeiten (danke!)
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)
Dies gibt mir den folgenden Fehler:
IOError: [Errno 9] Bad file descriptor
Kurznachricht
In Kommentaren wird mir gesagt, dass der Fehler darin besteht, dass ich die Datei mit dem Modus 'rw' anstelle von 'r +' / 'r + b' öffne, sodass ich meine Frage eventuell erneut bearbeiten und den gelösten Teil entfernen sollte.
r+Modus. Fügen Siebauch hinzu, damit es auch unter Windows funktioniert, ohne dass ein lustiges Line-Ending-Geschäft zustande kommt. Schließlich möchten Sie zum Anfang der Datei zurückkehren und sie am Ende abschneiden - siehe meine aktualisierte Antwort.