drucken von UTF-8 in Python 3 mit Sublime Text 3
Habe ich dieses Python ist3 code zu Lesen versuchen und drucken von einer utf-8-codierte Datei:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line)
Wenn ich bauen mit Sublime Text 3 bekomme ich folgende Fehlermeldung:
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 18: ordinal not in range(128)
Jedoch, es funktioniert die Datei wenn ich Sie nur ausführen meines Codes im terminal mit Python ist3.
Meine build-Konfiguration ist
{
"cmd": ["/usr/local/bin/python3", "$file"]
, "selector": "source.python"
, "file_regex": "file \"(...*?)\", line ([0-9]+)"
}
Wenn ich es zu ändern:
f = open('mybook.txt', encoding='utf-8')
for line in f:
print(line.encode('utf-8'))
Dann druckt das utf-8-kodierte byte-Folge (ich glaube, das ist, was passiert).
b'Hello\n'
b'\xc2\xab\xe2\x80\xa2\n'
b'Goodbye'
Aber ich weiß auch nicht, wie man von diesem zu drucken, die unicode-Zeichen auf dem Bildschirm...
Auch, wenn ich versuche diese env-variable als pro Ein python-Programm nicht ausgeführt werden kann, in sublime text 3, aber der Erfolg in der bash es immer noch nicht beheben.
print(line.decode())
Wie es scheint, SublimeText Ausgabe-Gerät nur mit ASCII... check SublimeText Optionen, um zu sehen, ob du etwas tun kannst, die.
Dekodieren ist nicht eine Methode in string. Ich habe aktualisiert, oben mit ein bisschen info.
Ich glaube immer noch, das ist eine Sublime Text problem: es sagt dem python-interpreter zu verwenden, ASCII, um die Ausgabe anzuzeigen. Um dieses problem zu lösen sollten Sie die Konfigurationen für SublimeText terminal und wählen Sie die Codierung, oder richtig den Umgebungsvariablen.
Das denke ich auch - nur noch nicht in der Lage, es zu finden, aber ich bin der Hoffnung, es gibt einige sublime text ninjas herum 🙂
InformationsquelleAutor allstar | 2016-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort war eigentlich in der Frage verknüpft, die in Ihrer Frage -
PYTHONIOENCODING
muss"utf-8"
. Aber seit OS X ist dumm und nicht abholen auf Umwelt-Variablen, die im Terminal oder über.bashrc
oder ähnliche Dateien, das funktioniert nicht in der angegebenen Weise in der Antwort auf die andere Frage. Stattdessen, Sie brauchen, um passieren, dass die environment-variable Erhaben.Glücklicherweise ST3 Systeme bauen (ich weiß nicht, über ST2) haben die
"env"
option. Dies ist ein Wörterbuch von Schlüssel und Werte übergebenexec.py
, die verantwortlich ist für die Ausführung von build-Systemen, ohne die"target"
option gesetzt. Wie bereits in unseren Kommentaren oben, ich habe darauf hingewiesen, dass das Beispiel-Programm funktioniert einwandfrei auf einem UTF-8-kodierte text-Datei mit nicht-ASCII-Zeichen bei der Ausführung mit ST3 (Build 3122) auf Linux, aber nicht mit der gleichen version laufen auf OS X. All das war notwendig, um es zu laufen war, ändern Sie die build-system zu enclude diese Zeile:Sparte ich das build-system, drücken Sie ⌘S, und das Programm lief einwandfrei.
BTW, wenn Sie möchten, um zu Lesen
exec.py
oderPackages/Python/Python.sublime-build
, oder jede andere Datei, verpackt in eine.sublime-package
Archiv, installierenPackageResourceViewer
über Package Control. Verwenden Sie die "Ressource Öffnen" - option in der Command-Palette zu wählen, einzelne Dateien, oder "Extrahieren-Paket" (beide sind mit einem vorangestellten "PackageResourceViewer:" oderprv
mit fuzzy-Suche) zu extrahieren, ein ganzes Paket an IhrePackages
Ordner, auf die zugegriffen wird, indem SieSublime Text → Preferences → Browse Packages…
(nurPreferences → Browse Packages…
auf anderen Betriebssystemen). Es liegt auf Ihrer Festplatte in folgendem Verzeichnis:~/.config/sublime-text-3/Packages
~/Library/Application Support/Sublime Text 3/Packages
C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
InstallationFolder\Sublime Text 3\Data\Packages
Sobald die Dateien gespeichert sind, um Ihre
Packages
Ordner (wenn Sie nur über die "Ressource Öffnen" - option und schließen ohne änderung oder speichern, werden Sie nicht), Sie werden das überschreiben der gleichnamigen Dateien in den.sublime-package
Archiv. So, zum Beispiel, wenn Sie möchten, Bearbeiten Sie die Standard -Python.sublime-build
Datei in derPython
- Paket werden Ihre änderungen gespeichertPackages/Python/Python.sublime-build
, und wenn Sie denPython
build-system aus dem Menü, verwenden Sie nur Ihre version.InformationsquelleAutor MattDMo
Funktioniert es, vielen Dank, das komplette build-system-Skript für Sublime Text 3
Werkzeug -> Build-System -> Neues Build-System
InformationsquelleAutor Sunding Wei
Hinweis: wenn Sie venv mit S3 aktualisieren Sie den Python + Virtualenv.sublime-build-Ressource-Datei.
InformationsquelleAutor Matt Moore