IPythonでの日本語が微妙

IPythonだと、"u"をつけてもunicode文字列として扱ってくれてない?

Python (command line)

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> src = u'あ'
>>> src
u'\u3042'
>>> print src
あ
>>>

普通。"u"をつけてunicode文字列として扱えば、unicodeとしてよしなに処理してくれる。

IPython

In [27]: import sys

In [28]: sys.getdefaultencoding()
Out[28]: 'ascii'

In [29]: src =  u'あ'

In [30]: src
Out[30]: u'\x82\xa0'

In [31]: print src
---------------------------------------------------------------------------
<type 'exceptions.UnicodeEncodeError'>    Traceback (most recent call last)

C:\<ipython console> in <module>()

<type 'exceptions.UnicodeEncodeError'>: 'cp932' codec can't encode character u'\x82' in position 0: illegal multibyte sequence

In [32]: src.encode('iso-8859-1')
Out[32]: '\x82\xa0'

In [33]: print src.encode('iso-8859-1')
あ

微妙。"u"をつけてもunicode文字列として扱ってくれてない?

In [34]: src = 'あ'

In [35]: src
Out[35]: '\x82\xa0'

In [36]: print src
あ

latin-1としてencodeしたときにちゃんと表示されてるのは、"u"をつけないで日本語を入れたときと同じ理由というのはわかる。
unicodeとして処理しないで、多バイト文字を普通に1バイトずつ出力に渡して、cp932をデフォルトのエンコーディングとして扱っているコマンドプロンプトがたまたま、それを正しく解釈できたから、ということでしょう。
だから当然、

In [39]: len(src)
Out[39]: 2

となる。