WindowsのPythonプログラムがUTF-8のテキストファイルを読み込めない

以下のようなテキストファイルをUTF-8で保存する。

(ファイル名) sample.txt

私は将来、Pythonプログラマーになりたいです。


このファイルを読み込んで画面に表示するPythonスクリプトを書いてみる。

(ファイル名) read.py

# -*- coding:utf-8 -*-

with open('sample.txt', 'rt') as fin:
    for line in fin:
        print(line)

これをWindowsのコマンドプロンプトで実行すると、

UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 4: 
illegal multibyte sequence

エラーが出た。

UTF-8で書かれた0x81の文字をCP932に変換できないということらしい。
sample.txtの文字コードをUTF-8に変更すればちゃんと動いた。

また、Linux上ではUTF-8のテキストファイルは問題なく読み込める(当然だが)。

と言うわけで、Windows版のPythonでUTF-8を読み込めれば問題解決となりそうだ。

解決策

ファイルオープンの際、エンコーディングを指定してやる。

(修正前)

with open('sample.txt', 'rt') as fin:

(修正後)

with open('sample.txt', 'rt', encoding='UTF-8') as fin:

しかし・・・

Linuxで動いていた、エンコーディング指定のないプログラムをWindowsで動かそうとすると、いちいちこの修正をやるのがあまりにも面倒だ。( ̄へ  ̄ )

Pythonプログラミング物語 © 2016 Frontier Theme