You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildozer全项目出现UnicodeEncodeError('latin-1')报错求助

解决Buildozer构建时的UnicodeEncodeError问题

所有Buildozer项目构建时均触发以下Unicode编码错误,已尝试删除.buildozer及相关缓存文件夹后重新构建,问题未解决:

Traceback (most recent call last):
  File "/usr/local/bin/buildozer", line 33, in <module>
    sys.exit(load_entry_point('buildozer==1.4.1.dev0', 'console_scripts', 'buildozer')())
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/scripts/client.py", line 13, in main
    Buildozer().run_command(sys.argv[1:])
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/__init__.py", line 1024, in run_command
    self.target.run_commands(args)
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/target.py", line 93, in run_commands
    func(args)
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/target.py", line 103, in cmd_debug
    self.buildozer.prepare_for_build()
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/__init__.py", line 180, in prepare_for_build
    self.target.compile_platform()
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/targets/android.py", line 841, in compile_platform
    self._p4a(p4a_create, get_stdout=True)[0]
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/targets/android.py", line 133, in _p4a
    return self.buildozer.cmd([*self._p4a_cmd, *cmd, *self.extra_p4a_args], **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/__init__.py", line 316, in cmd
    stdout.write(chunk.decode('utf-8', 'replace'))
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 7616-7677: ordinal not in range(256)

解决方法

  • 修改Buildozer源码编码逻辑
    定位到报错文件/usr/local/lib/python3.10/dist-packages/buildozer-1.4.1.dev0-py3.10.egg/buildozer/__init__.py的第316行,将原代码替换为以下内容,强制兼容输出编码:

    # 先解码为utf-8,再编码为utf-8后用latin-1兼容输出
    stdout.write(chunk.decode('utf-8', 'replace').encode('utf-8').decode('latin-1', 'replace'))
    

    或者直接重置标准输出流为utf-8编码:

    import sys
    # 确保stdout使用utf-8编码
    if sys.stdout.encoding != 'utf-8':
        sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf-8', buffering=1)
    stdout.write(chunk.decode('utf-8', 'replace'))
    
  • 设置系统环境变量强制UTF-8
    在执行Buildozer命令前,临时设置环境变量:

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    

    若需永久生效,可将上述两行添加到~/.bashrc(Bash)或~/.zshrc(Zsh)文件末尾,重启终端后生效。

  • 升级Buildozer版本
    当前使用的是开发版1.4.1.dev0,编码处理可能存在bug,尝试升级到稳定版:

    pip install --upgrade buildozer
    

    若稳定版仍有问题,可尝试安装最新开发分支:

    pip install git+https://github.com/kivy/buildozer.git
    

内容的提问来源于stack exchange,提问作者denmkit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:20:41