Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

背景

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 使うべきだとは思う‥)

EsseiK
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away