LoginSignup
8
3

More than 5 years have passed since last update.

Kivy を Windows で動作させると UnicodeDecodeError が発生する場合の対処方法

Last updated at Posted at 2017-12-22

背景

Kivy を使用し、 .kv ファイルで記述したGUIを Windows 環境で動作させようとしたところ、UnicodeDecodeError が発生し、起動に失敗した。
エラーメッセージは以下。

UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 174: illegal multibyte sequence

環境

  • OS:Windows10
  • Python:3.5.4 (Anaconda3)
  • Kivy:1.10

対処

Kivy の bulider.py を一部変更。
ファイルは(自分の場合は)以下の場所にあった。
C:\Users\[ユーザー名]\Anaconda3\envs\[環境名]\Lib\site-packages\kivy\lang\builder.py

変更内容

builder.py 内、 load_file 関数の以下の箇所を編集。
kivy 1.10.0 の場合は 288行目。

変更前

builder.py
        with open(filename, 'r') as fd:

変更後

builder.py
        with open(filename, 'r', encoding='utf8') as fd:

上記変更にて、正常に動作することを確認した。

原因

(推測だが)Windows でファイルを開く場合、自動的にShuft-JIS(cp932)として解釈される、しかしファイルはUTF8で記述されているため、エンコードに失敗した。
対処として、UTF8としてファイル指定し開くと問題なく開くことができる。
なお、これの対応を行ってしまった場合、万一、Shift-JIS や ECU-JP で.kvファイルを記述した場合、エラーが発生する可能性がある。(そもそも Python スクリプト書くなら UTF8 使うべきだとは思う‥)

8
3
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
8
3