问题描述
当kivy配置文件(*.kv)编码格式为UTF-8时,在运行时,会出现编码错误或乱码问题。
错误提示类似于:
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8b in position 206: illegal multibyte sequence
错误提示位置:
File “<kivy安装路径>\kivy\lang\builder.py”, line 290, in load_file
data = fd.read()
问题分析
系统默认以’gbk‘模式打开文件,所以读取数据时会出错。
问题解决
将配置文件以二进制格式打开,然后将数据以’utf-8’格式编码
即:
原文件内容:
with open(filename, 'r') as fd:
kwargs['filename'] = filename
data = fd.read()
修改后文件内容:
with open(filename, 'rb') as fd:
kwargs['filename'] = filename
data = fd.read().decode('utf-8')