質問: ![画像の説明をここに入力](https://i.stack.imgur.com/XqAbT.png) ターミナル上の対話で バイト文字列で表示されてしまうのです。 デバッグが面倒で困っています。。 ターミナルの環境設定では、 ![画像の説明をここに入力](https://i.stack.imgur.com/CaY9s.png) UTF-8に設定されています。 python2系、 mac os el capitan を利用しています。
回答: Python 3 に移行しましょう。 もしどうしても Python 3 に移行できない場合は、 `list(xml)` をやめて `print xml` でどうでしょう? 解説: 一般的に言われる「文字化け」は、テキストの実際のエンコーディングと違うエンコーディングで デコードしようとしたときに起こります。(EUC-JPでエンコードされた文字列をcp932でデコードするなど) しかし、今回のケースでは事情が異なります。 まず、 Python 2 のバイト文字列を使っているために `list(xml)` は1文字(厳密には1codepoint)ごとのリストではなく、1バイトごとのリストになっていて、 utf-8 が1文字のために数バイトを利用しているときにその文字がバラバラになってしまっています。 また、Python 2 が、ASCIIの表示可能文字以外の文字列をクォートしながら表示するときに、 `\x9b` などでエスケープして表示しているのです。 `print xml` だとうまくいくのは、クォートしたりエスケープしたりせずに直接文字列の内容を出力するようになるからです。 Python 3 の場合はデフォルトでユニコード文字列が使われるので `list(xml)` で1文字ずつに分解されますし、クォート付きで表示するときもASCIIではなくてUnicodeの表示可能文字はエスケープせずにそのまま表示してくれるので、 `list(xml)` でも文字がそのまま見えると思います。