【问题标题】:python3 buildozer kivy ascci codec cant decodepython3 buildozer kivy ascii编解码器无法解码
【发布时间】:2016-10-04 11:03:04
【问题描述】:

操作系统:ubuntu 16.04

我在将我的 kivy 应用程序部署到我的 Android 手机时遇到问题。

当我在终端输入buildozer android_new debug deploy run 我得到了错误

UnicodeDecodeError: 'ascii' 编解码器无法解码位置 1658 中的字节 0xc2: orinal 不在范围内 (128)

有谁知道我该如何解决这个问题?

乔什

【问题讨论】:

  • 发布完整日志。
  • 在打印之前不要打印非 ascii 字符或使用正确的编码。
  • 无论如何都不要在android上打印,你只能用logcat看到它,这对于普通使用毫无意义。让自己成为应用程序中的控制台,例如自定义的TextInputLabel,它们会自动为您处理编码,然后您应该不会遇到这些问题。简单的<textinput>.text += <your print> 将满足您的需求,如果您正确打包应用程序(并且如果它正确启动),那么您甚至不需要使用 logcat。

标签: android python-3.x ascii kivy


【解决方案1】:

我最近在 Docker 中构建 python/kivy/buildozer 环境时遇到了类似的问题。基础镜像是 Ubuntu 16.04,所以我认为它也可能对你有用。

就我而言,Ubuntu Docker 映像中默认没有安装语言环境,所以我必须使用apt-get install -y locales 安装它,但我认为您不需要这样做。

首先,运行:

locale -a 

这将显示您系统上所有可用的语言环境。如果您看到列出了您需要的语言环境,则使用locale 查看LC_ALLLANG 的设置。如果它们未设置为您需要的,或者它们设置为POSIX,则跳到第四步。

其次,生成语言环境文件。就我而言,我需要美国英文版;因此我的命令是:

locale-gen en_US.UTF-8

如果您需要其他语言,则需要查找适合您需要的文件名。

第三,更新如下:

update-locale en_US.UTF-8

第四,使用以下命令更新 Buildozer/Python 将要查找的环境变量:

export LC_ALL=$(locale -a | grep en_US)
export LANG=$(locale -a | grep en_US)

请注意,我使用的是 grep,因为我发现本地系统上的语言环境文件并不总是具有相同的扩展名,但文件名第一部分的命名约定似乎是一致的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 2016-10-03
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多