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 Sieb
auch 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.