質問: pythonのプログラム内で作ったpythonファイルをマニュアルで実行しようとしたら、こうなりました。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3f46548e8a15a29383c762171b99333d.png) 全コード ---- https://skysoulinc.web.fc2.com/text_kyouyuu/todo_mondaiten.html の401から412行で生成しています。 試したこと ----- `.encode('utf-8')` を付け加えてもうまくいきませんでした。
回答: 通常の`write`で出力する方法では、utf-8じゃなくてshift-jis(cp932)で出力されてます(windows標準) 質問文の通りutf-8指定で出力すればいいのですが、`.encode('utf-8')`で出力するにはopen時にバイナリモードを指定する必要があります。 ``` f1 = open(r'./hoge.txt','wb') #'b'がバイナリモード f1.write(naiyou.encode('utf-8')) # 質問文の方法で出力可能 ``` もしくは、open時に出力エンコーディングを指定する方法もあります。 ``` f1 = open(r'./hoge.txt','w',encoding='utf-8') # open時にencodingを指定 f1.write(naiyou) ``` テキスト出力用途なら後者の方がスッキリですね。