这里有一个小节目:帮助我理解了为什么Unicode的唯一与Python
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
print('abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
print(u'abcd kΩ ☠ °C √Hz µF ü ☃ ♥')
在Ubuntu,GNOME终端,IPython中没有我所期待的:
In [6]: run Unicodetest.py
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
我得到的结果相同如果我在trypython.org上输入命令。
codepad.org,在另一方面,产生一个错误的第二命令:
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)
反之,在Windows IDLE轧液机的第一命令的输出,但不抱怨第二:
>>>
abcd kΩ ☠°C √Hz µF ü ☃ ♥
abcd kΩ ☠ °C √Hz µF ü ☃ ♥
IPython的在Windows命令提示或通过Python的(X,Y)的Console2版本二者裂伤第一输出和抱怨第二:
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的内部的Python(X,Y)的Spyder的不一样,但不同的:
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>
(在sitecustomize.py,Spyder的设置它基于本地化模块的编码,这是cp1252
用于Windows自带SPYDER_ENCODING
7.)
什么给?我的一个命令是错的吗?为什么一个人在某些平台上工作,另一个人在其他平台上工作?如何一致地打印Unicode字符而不会崩溃或搞砸?
是否有一个替代终端的Windows,其行为像Ubuntu中的一个?看来TCC-LE,Console2,Git Bash,PyCmd等都只是cmd.exe的包装而不是替代品。有没有办法在IDLE使用的界面内运行IPython?
在IPython unicode不幸被打破。我们应该在0.11版本的下一个版本中修复它,所以它的行为就像在一个原始的Python解释器中输入一样。 – 2011-04-18 23:00:32
检查[this](http://stackoverflow.com/q/39528462/5284370)。 – Soorena 2016-09-18 13:21:22