Kivy(python-for-android)缺少编解码器

时间:2014-09-09 18:06:48

标签: python unicode character-encoding kivy codec

我刚刚遇到了丢失编解码器的问题,已经讨论过here,但解决方案提供了其他问题,导致原始问题无法显示。但是我现在遇到了同样的事情,这次没有解决方法。

我在windows-1250编码中有HTML页面。我正在使用htmlRequest = requests.get(url)来获取它,我必须明确指定编码为htmlRequest.encoding = 'windows-1250'。然后阅读htmlRequest.text应正确解码内容,它确实可以在Win和Linux上运行,但在Android上我只获得空格而不是特殊字符。

我想知道为什么,所以我尝试显示有效的原始htmlRequest.content,但在htmlRequest.content.decode('windows-1250')(与htmlRequest.text相同)上,应用会引发异常:{{1} }。我也尝试过"LookupError: unknown encoding: windows-1250"这个名字,但同时又为Win和Linux工作,它没有改变Android的情况。

因此,我认为这些编解码器确实缺失,并寻求帮助来解决这个问题。我无法真正改变该页面的编码,如果我错过了正确的编解码器,我该如何正确解码呢?或者还有其他方法吗?

编辑:正如Ryan所解释的那样,白名单应该会有所帮助,但我正在使用Buildozer构建apk。它是否有任何选项(使用cp1250文件)?

1 个答案:

答案 0 :(得分:4)

额外的编解码器从python-for-android构建中被剥离(列入黑名单)以节省空间。您可以通过将所需的编解码器列入白名单来解决此问题。创建一个文件(可能称为whitelist.txt)或将以下行添加到现有白名单中:

encodings/cp1250.pyo

然后使用build.py参数将白名单文件提供给--whitelist


对于buildozer,您可以将其添加到buildozer.spec中的android.p4a_whitelist值。