Python kivyで日本語かつListViewを含むkvファイルの使用時にUnicodeDecodeError

最近PythonのGUIフレームワークであるkivyを知ったので、昔作ったCLIスクリプトをデスクトップアプリ化してみています。

その過程で少し特殊なエラーが起きたので、その状況と解決策を書いておきます。

状況

  • kvファイル中にListViewを定義してコードから呼び出し
  • kvファイルはshift-jisで保存(Windowsで動かすため)

その状況で以下のエラーが発生しました。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 448: invalid start byte

ListViewを取り除くと普通に動くため、ListView中で何か問題が起きているようです。

(むしろなぜListViewがある時だけエラーが起きるのか・・・)

解決策

日本語を含むアプリを作成するため、kvファイルの文字コードがshift-jisで保存されていました。

エラー内容と合わせて考えると、ListViewが文字のデコードに失敗しているようです。

そこでkvファイルのエンコーディングを明示的に指定してあげます。

kvファイルの先頭に、

# -*- coding:Shift_JIS -*-

と記述することで解決できました。

ぐぐっても解決法がなかなか見当たらないあたり、まだ日本語でのkivy利用例は少ないのかもしれませんね・・・

シェアする

  • このエントリーをはてなブックマークに追加

フォローする