He aquí un pequeño programa:ayuda a entender por qué Unicode sólo funciona a veces con Python
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
print('abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
print(u'abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
En Ubuntu, terminal de Gnome, IPython no es lo que esperaría:
In [6]: run Unicodetest.py
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
tengo la misma salida si ingreso los comandos en trypython.org.
codepad.org, por el contrario, produce un error para el segundo comando:
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
Traceback (most recent call last):
Line 6, in <module>
print(u'abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03a9' in position 6: ordinal not in range(128)
Por el contrario, en reposo en Windows Mangles la salida del primer comando, pero no se queja sobre el segundo:
>>>
abcd kΩ ☠°C √Hz µF ü ☃ ♥
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
IPython en un símbolo del sistema de Windows o a través de Python (x, y) 's versión Console2 tanto mangle la primera salida y se quejan de la segunda:
In [9]: run Unicodetest.py
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (15, 0))
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
Desktop\Unicodetest.py in <module>()
4 print('abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
5
----> 6 print(u'abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
7
8
C:\Python27\lib\encodings\cp437.pyc in encode(self, input, errors)
10
11 def encode(self,input,errors='strict'):
---> 12 return codecs.charmap_encode(input,errors,encoding_map)
13
14 def decode(self,input,errors='strict'):
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2620' in position 8: character maps to <undefined>
WARNING: Failure executing file: <Unicodetest.py>
IPython dentro Python (x, y) 's Spyder hace lo mismo, pero de manera diferente:
In [8]: run Unicodetest.py
abcd kΩ ☠°C √Hz µF ü ☃ ♥
------------------------------------------------------------
Traceback (most recent call last):
File "Unicodetest.py", line 6, in <module>
print(u'abcd kΩ ☠°C √Hz µF ü ☃ ♥')
File "C:\Python26\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u03a9' in position 6: character maps to <undefined>
WARNING: Failure executing file: <Unicodetest.py>
(En sitecustomize.py, Spyder establece su propio SPYDER_ENCODING
basado en la codificación del módulo de configuración regional, que es cp1252
para Windows 7.)
¿Qué ofrece? Es uno de mis comandos mal? ¿Por qué uno trabaja en algunas plataformas mientras que el otro trabaja en otras plataformas? ¿Cómo imprimo caracteres Unicode consistentemente sin colapsar o atornillar?
¿Hay un terminal alternativo para Windows que se comporte como el de Ubuntu? Parece que TCC-LE, Console2, Git Bash, PyCmd, etc. son solo envoltorios para cmd.exe en lugar de reemplazos. ¿Hay alguna forma de ejecutar IPython dentro de la interfaz que usa IDLE?
En IPython, unicode lamentablemente está roto. Deberíamos tenerlo arreglado para la próxima versión, 0.11, por lo que se comporta como escribir en un intérprete de Python sin formato. –
revise [this] (http://stackoverflow.com/q/39528462/5284370) fuera. – Soorena