or1ko's diary

日々を書きます

utf8を読み込む時

utf8のファイルを扱ったらはまったのでメモ。

上記を参考

import sys, codecs

class test:
	def __init__(self, str):
		self.str = str
	
	def __str__(self):
		return self.str.encode('shift_jis')

if __name__ == '__main__':
	path = sys.argv[1]
	for line in codecs.open(path, 'r', 'utf_8').readlines():
		print test(line)

よく理由がわからないのだけれど、__str__関数内で、return self.strのままだと、str(self.str)を評価されることが原因なのではないか。