雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2009-11-21

[]iPythonで日本語を表示する iPythonで日本語を表示する - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - iPythonで日本語を表示する - 雲雀は高く空を舞い iPythonで日本語を表示する - 雲雀は高く空を舞い のブックマークコメント

iPython 0.10(with Python 2.6.3.iPythonSciPyNumPyと一緒に入れた (or入った)でユニコード文字列がうまく取り扱えない例。

こちらにより修正しました。

s = u'あいうえお'
print s
<もじばけもじばけ>

ユニコード1文字(3byte)を1byteずつの3ユニコード文字列としてしまうことに由来するバグだとか。

修正方法は以下。iplib.pyの2200行目付近を以下のように修正。一行目をコメントアウトし、以降の文字列をユニコード文字列に変更するだけ。これで無事表示されるようになる。

-        source=source.encode(self.stdin_encoding)
-        if source[:1] in [' ', '¥t']:
-            source = 'if 1:¥n%s' % source
+       #source=source.encode(self.stdin_encoding)
+        if source[:1] in [u' ', u'¥t']:
+            source = u'if 1:¥n%s' % source

ちなみにiplib.pyportを使ってSciPyとかと一緒に入れた僕の場合は、/opt/local/var/macports/software/py26-ipython/0.10_0+scientific/opt/local/
Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/IPython/ipapi.py にありました。

トラックバック - http://chick.g.hatena.ne.jp/allegro/20091121
テクノラティプロフィール