擅长:python、mysql、java
<p>在使用窄Unicode内部版本的Python 3.2.1上:</p>
<pre><code>PythonWin 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information.
>>> import sys
>>> sys.maxunicode
65535
</code></pre>
<p>您发现了什么(UTF-16编码):</p>
^{pr2}$
<p>绕道而行:</p>
<pre><code>>>> import struct
>>> s=s.encode('utf-32-be')
>>> struct.unpack('>{}L'.format(len(s)//4),s)
(97, 98, 99, 8364, 66306, 1114109)
>>> for i in struct.unpack('>{}L'.format(len(s)//4),s):
... print('U+{:04X}'.format(i))
...
U+0061
U+0062
U+0063
U+20AC
U+10302
U+10FFFD
</code></pre>
<h3>Python 3.3更新:</h3>
<p>现在它的工作方式与OP期望的一样:</p>
<pre><code>>>> s = "abc\u20ac\U00010302\U0010fffd"
>>> len(s)
6
>>> for c in s:
... print('U+{:04X}'.format(ord(c)))
...
U+0061
U+0062
U+0063
U+20AC
U+10302
U+10FFFD
</code></pre>