2011年11月5日土曜日

NetBeans でpython入門したら、出力が文字化けした。


OS:Windows Vista
開発環境:NetBeans 6.7.1
python:2.6.6

NetBeans(総合開発環境)を使い、pythonを入門していた。

(10日でおぼえる Python 入門教室: 穂苅 実紀夫, 寺田 学, 中西 直樹, 堀田 直孝, 永井 孝: 本 : http://goo.gl/TMLKk

上記の本の通り、IDLE(こっちも総合開発環境)だかなんだかを使って、素直にコードを打ち込んでいればよかったものの、コードを補完したり、打ち間違えを表示したりしてくれないので、NetBeansを使っている。

NetBeansのpythonプラグインをインストールし、さて頑張るかと思いコードを打ち込んでいたが、出力が文字化けした。
(その前に日本語部分でコンパイルエラーがあった。コメント部分でさえ。今回はこの部分の対処は書いていない。)

その対処について以下記載する。
参考サイト:
Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法 : http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/python/encoding.html

手順としては以下。
1.プロジェクトプロパティーからファイル自体のエンコードを指定する。
2.ソースにプロパティーで指定したエンコード情報で出力するように設定する。
3.プログラムを動作させ、表示を確認する。

Windowsなので、Shift_JISでやりました。
UTF-8がよかったものの、どうしても文字化けしてしまうので、やめた。


1.プロジェクトプロパティーからファイル自体のエンコードを指定する。




2.ソースにプロパティーで指定したエンコード情報を書き込む。
以下をソースに挿入する。
--------- ここから ----------
# coding: Shift_JIS

import sys
import codecs

sys.stdout = codecs.getwriter('shift_jis')(sys.stdout)
--------- ここまで ----------

実際にはこんな風になる。

ソース一部:

# To change this template, choose Tools | Templates
# and open the template in the editor.
# coding: Shift_JIS

__author__="andre"
__date__ ="$2011/11/05 9:28:16$"
import sys
import codecs
import urllib
from xml.etree.ElementTree import ElementTree
from xml.parsers.expat import ExpatError
sys.stdout = codecs.getwriter('shift_jis')(sys.stdout)
XML_BASE_URL = "http://weather.livedoor.com/forecast/webservice/rest/v1"
CITY_MAPS = [('wakkanai', '1'),('tokyo', '63'),('osaka', '81'),('fukuoka', '110'),('naha', '136')]


-----------------------------------


3.プログラムを動作させ、表示を確認する。
メニューの「実行」から「ファイルを実行(F)」を選択する。
下の方に標準出力が出るので、日本語が出ていることが確認できる。