PythonEngineの文字コード

C#GUI、文字列処理をIronPythonでやろうと思ったら、文字列処理ではまる。
C#のコード

	string sss = "テストデータでござるよ\n文字列です。";

	PythonEngine python_engine =  new PythonEngine();
	python_engine.Globals.Add("sss", sss);

	python_engine.ExecuteFile(".\\..\\iron_python.py");

	string v = python_engine.EvaluateAs<string>("retval");
	MessageBox.Show(v);

IronPythonのコード

	import sys

#デバッグ用
	f = open( 'dbg.log' , 'w' )
	f.write( sss ) ;
	f.close()

	lines = sss.splitlines()

#最初に見つかった行のデータを返す。
	retval = '見つかりません'
	for x in lines :
		result = x.find( "文字列" )
		if result != -1 :
			retval = x

C#UTF-8pythonUTF-8だから問題ないと考えていたのに、C#から渡した文字列からの検索も成功しないし、retvalで返す値を表示しても文字化けする。
IronPython側でsys.getdefaultencoding()を呼ぶと、'us-ascii'が返るので、これが原因かと色々試してみる。iron_python.pyをutf-8で保存してもダメ、u'見つかりません'に変更しても上手くいかなかったが、iron_python.pyの一行目に# -*- coding: utf-8 -*-を記述したら文字列の検索が成功し、IronPythonからC#に渡した値の文字化けが解消された。
それでも、デバッグ用に出力したファイルの文字化けはそのまま。IronPythonにはcodecsモジュールもない。この問題を解決するにはC#側でPythonEngineをnewした後に以下を実行する。

	python_engine.Sys.DefaultEncoding = Encoding.UTF8;

これで、ファイル出力も(すべてUTF-8なら)正常にできた。文字コード絡みの問題はどうもはまる・・・