En mi máquina Mac (OS X Mavericks) y Ubuntu, instalé Sympy, que es una biblioteca de Python para matemáticas simbólicas. Parte de sympy
esto es la bonita función de impresión que utiliza caracteres Unicode para embellecer las expresiones simbólicas en los entornos de línea de comandos compatibles con Unicode. Por ejemplo, en mi máquina Ubuntu y gnome-terminal
ejecutando el siguiente código
from sympy import *
x = Symbol("x")
pprint(Integral(sqrt(1/x), x))
rinde a
Sin embargo, el mismo comando en OS X con iTerm2 (que debería ser compatible con Unicode) da como resultado
Estoy usando sympy 0.7.5
lo que hice desde la fuente con la última versión de iTerm2
(Build 1.0.0.20140518). ¿Hay algo que extraño aquí? El desarrollador principal de sympy es uno de la red StackExchange. Sería genial saber su opinión sobre esto.
Finalmente descubrí cuál es el problema. El problema no estaba en los propios emuladores de terminal ya que ambos OSX Terminal
ya iTerm2
estaban usando UTF-8
por defecto. Resultó que uno tiene que informar a Python explícitamente que la terminal es capaz de manejar Unicode por medio de
export PYTHONIOENCODING=utf-8
Créditos a esta respuesta de stackoverflow.
Asegúrese de que su terminal en las preferencias de iTerm -> Perfiles -> Terminal admita Unicode (la codificación de caracteres debe ser "Unicode (UTF-8)". SymPy elegirá ASCII si el terminal no informa que admite Unicode.
UTF-8
codificación de caracteres y, sin embargo, no funciona.
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)
. Puedo enviarle la salida de error completa si lo desea.asmeurer
Asmus