Windows で Python インタラクティブシェルを使用する場合、CMD を使うことがありますが、特に日本語文字を出力したい場合に非常に使用しにくい。
URLDecode した結果をプロンプト上で見ようと思うと文字化けしてしまいます。
>>> import urllib
>>> print urllib.unquote(‘%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88’)
縺薙・繧オ繧、繝
回避策は、例えば pyiconv を使って utf-8 から cp932 に変換するなど工夫しないと、シェル上に文字を表示することができない。
>>> import urllib, pyiconv
>>> print pyiconv.pyiconv(‘utf-8′,’cp932’).convert(urllib.unquote(‘%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88’))
このサイト
ただし、この回避策はあくまで UTF-8 に含まれる文字が cp932 に含まれる文字に変換できる場合にのみ有効。
いつも Windows の CMD (コードページ 932 設定) には困っていて、chcp 65001 にしてもまとも使用できたためしがなく、いつもあきらめモード。必要なときには pyiconv で文字コードを変換するか、ファイル書き出しに頼っていた。
が、今日 Google App Engine のサンプルを見ていて、Interactive server-side Python shell (http://shell.appspot.com/) なる、いいものを発見!
例えば上述の例などを、この Interactive server-side shell でやる場合には、urllib だけインポートして、いきなり urllib.unquote() の結果を print してあげれば OK。
>>> import urllib
>>> print urllib.unquote(‘%E3%81%93%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%88’)
このサイト
ま、きっと IDLE をインタラクティブシェルとして使っていればいいのでしょうが、Python のない環境でも使えるし、この server-side shell も 1 alternative として使うことにしよう。