LoginSignup
2
0

More than 3 years have passed since last update.

UnicodeEncodeDecodeError: BOMありUTF-8ファイルの読み込み

Posted at

問題

Pythonでテキストファイルを読み込むために以下のコードを実行した.

readtext.py
f = open('test.txt','r',encoding='utf-8')
line = f.readline()
print(line)

そしたら,UnicodeEncodeDecodeErrorが出ました.

UnicodeEncodeDecodeError
"'cp932' codec can't encode character '\ufeff' ..."

解決したのでメモしておきます.

諸条件

OS: Windows10 Pro
IDE: PyCharm Community 2019.1
Env: Anaconda3
その他:テキストファイルはWindowsのエディタで作成

原因

\ufeffはUTF-8テキストの開始を表す文字列だそうで,cp932(Windowsの標準入出力文字コード)にはないので,エンコーダーが困ってしまっちゃったようです.よしよし.
ちなみにこのエンコーダーは,unicode文字列をwindowsに書き出したりするときに自動でcp932に変換してくれるらしいです.親切が裏目にでちゃったんだね.よしよし.

解決策

ファイルを開く時に,\ufeff付きのUTF-8テキストであることを教えてあげるとうまくいきました.ちなみに\ufeff付きのファイルをBOMありUTF-8っていうらしいです.

readtext2.py
f = open('text.txt','r',encoding='utf-u-sig') # BOMありUTF-8
line = f.readline()
print(line)

めでたしめでたし.

その他

以下の情報のおかげで無事に問題を解決することができました.どうもありがとうございます.

  1. (Windows) Python3でのUnicodeEncodeErrorの原因と回避方法
  2. \ufeffって???
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0