为什么IDLE正确处理一个符号而不处理另一个符号?
>>> e = '€'
>>> print unichr(ord(e))
# looks like a very thin rectangle on my system.
>>> p = '£'
>>> print unichr(ord(p))
£
>>> ord(e)
128
>>> ord(p)
163
我尝试添加各种#编码行,但这没有帮助。
编辑:浏览器应该是UTF-8,否则这看起来很奇怪
编辑2:在我的系统上,欧元字符在第1行正确显示,但不在打印行中显示。两个地方都正确显示了磅字符。
答案 0 :(得分:3)
答案取决于IDLE REPL使用的编码。您应该更明确地知道什么是实际的unicode文本,以及什么是字节序列。默想这个例子:
# -*- coding: utf-8 -*-
c = u'€'
print type(c)
for b in c.encode('utf-8'):
print ord(b)
c = '€'
print type(c)
for b in c:
print ord(b)
编辑:
对于IDLE,它有点borken,需要修补才能正常工作。
IDLE 1.2.2
>>> c = u'€'
>>> ord(c)
128
>>> c.encode('utf-8')
'\xc2\x80'
>>> c
u'\x80'
>>> print c
[the box thingy]
>>> c = u'\u20ac'
>>> ord(c)
8364
>>> c.encode('utf-8')
'\xe2\x82\xac'
>>> c
u'\u20ac'
>>> print c
€
在第一个会话中,当解释€时,它已经被错误编码,并且是不可恢复的。
答案 1 :(得分:0)
问题可能是你的字体没有正确的字形。除了正确编码之外,在IDLE ui中显示文本时必须使用正确的字体。尝试使用不同的字体来查看它是否有帮助(例如,Arial Unicode有一个非常大的字形补码)。
欧元符号比英镑符号要新得多,所以你的字体可能没有欧元字形。