未だにpythonでの日本語の扱い方を間違えることがあるので、気を付けるべき場所に気づき次第まとめていきます
(英語以外のすべての文字に言えることですが、とりあえず日本語用、としておきます)
ひとまずは2系向けの内容にしておきます。
日本語が入ったファイルを読み込むとき
import codecs
jp_file = codecs.open('nihongo.txt', 'r', 'utf-8')
とりあえずこうしておけばファイルから読み込んだ内容をunicodeの文字集合に割り当ててくれる
(ファイルのエンコード方式にかかわらずunicode型になる)
コードに日本語を書きたい時
# -*- coding: utf-8 -*-
nihongo = '日本語が書ける'
# 日本語のコメントも書けるようになる
# -- coding: utf-8 --とやってコードのエンコード形式を明示してやらないと、
pythonはコードがASCII(英数字と簡単な記号しかない)でエンコードされていると解釈してしまう
日本語が含まれるunicode型文字列を出力したい時
nihongo = 'ああああ'
print nihongo.encode('utf-8')
pythonは外部に文字を出力する際、エンコード形式を明示してやらないとASCIIで(略
printだけでなくファイル出力の際も同じ