Auf meinem Mac (OS X Mavericks) und meinem Ubuntu-Computer habe ich Sympy installiert, eine Python-Bibliothek für symbolische Mathematik. Ein Teil davon sympy
ist die hübsche Druckfunktion, die Unicode-Zeichen verwendet, um symbolische Ausdrücke in den Befehlszeilenumgebungen mit Unicode-Unterstützung zu verschönern. Zum Beispiel auf meinem Ubuntu-Rechner und auf ihm gnome-terminal
läuft der folgende Code
from sympy import *
x = Symbol("x")
pprint(Integral(sqrt(1/x), x))
macht zu
Der gleiche Befehl in OS X mit iTerm2 (das Unicode unterstützen sollte) führt jedoch zu
Ich verwende sympy 0.7.5
das, was ich aus dem Quellcode mit dem neuesten Build von iTerm2
(Build 1.0.0.20140518) erstellt habe. Gibt es etwas, das ich hier vermisse? Der Hauptentwickler von sympy ist einer des StackExchange-Netzwerks. Es wäre toll, seine Meinung dazu zu erfahren.
Ich habe endlich herausgefunden, was das Problem ist. Das Problem lag nicht bei den Terminalemulatoren selbst, da beide OSX Terminal
und standardmäßig iTerm2
verwendet wurden. UTF-8
Es stellte sich heraus, dass man Python explizit mitteilen muss, dass das Terminal unicodefähig ist
export PYTHONIOENCODING=utf-8
Credits für diese Stackoverflow-Antwort.
Stellen Sie sicher, dass Ihr Terminal in den iTerm-Einstellungen -> Profile -> Terminal Unicode unterstützt (die Zeichenkodierung sollte "Unicode (UTF-8)" sein). SymPy wählt ASCII, wenn das Terminal nicht meldet, dass es Unicode unterstützt.
UTF-8
Zeichencodierung und es funktioniert dennoch nicht.
Asmus
asmeurer
Asmus
Exception in SymPy Live of type <type 'exceptions.UnicodeEncodeError'>
[. . . ]UnicodeEncodeError: 'ascii' codec can't encode character u'\u2320' in position 0: ordinal not in range(128)
. Ich kann Ihnen die gesamte Fehlerausgabe senden, wenn Sie möchten.asmeurer
Asmus