スクリプトを書く上で、日本語の扱いが最初のネックになる。
pythonは、基本UTF-8で書く事を推奨する。
その場合にやらなければいけない設定は、過去にも取り上げた事がある。
【内部エンコーディングに使われるエンコードをUTF-8に設定...】
流れ的には、UTF-8でスクリプトを書き
出力する際に、WindowsならSJISへと変換するという形を取る。
Cygwinについては良く知らないが、
端末が対応した形式に変換して出力する癖を付けるのがベスト。
UTF-8が出力できるのなら、そのままunicodeで出力すれば、可能なはず。
print unicode(str) # もしくは print u"%s" % str
ちなみに、Windowsのコマンドライン上で実行する場合は、
Shift-JISにエンコードするとエラーになる時がある。
詳しくは割愛させてもらうが、それを回避するためにはmbcsへエンコードが必要。
print unicode(str).encode('mbcs');
LINUX上では、mbcsは存在しないようで、Shift_JIS-2004になるっぽい。
print unicode(str).encode('shift_jis-2004')
ちなみに、日本語の文字エンコードを自動で判別するなら
ppkd(旧ppdf)という非常に高性能なモジュールがある。
使い方は以下の感じ。
import ppkd
str = 'エンコードが何か分からない文字列'
pkd = ppkd.ppkd()
enc = pkd.guess(str)[1] # 文字エンコードを取得# SJISの場合は、'shift_jis'と返ってくるので、エンコードに使用する場合は
# 自分の場合、下の様に変更を加えている。
if enc == 'shift_jis': enc = 'shift_jis-2004' # Linuxの時
if enc == 'shift_jis': enc = 'mbcs' # コマンドプロンプトの時# utf-8にエンコード
str = unicode(str, enc).encode('utf-8')
Pythonで自動巡回等を行うなら、少々重さは感じるものの、必須になってくると思う。

コメントする