我刚刚遇到了丢失编解码器的问题,已经讨论过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
文件)?
答案 0 :(得分:4)
额外的编解码器从python-for-android构建中被剥离(列入黑名单)以节省空间。您可以通过将所需的编解码器列入白名单来解决此问题。创建一个文件(可能称为whitelist.txt)或将以下行添加到现有白名单中:
encodings/cp1250.pyo
然后使用build.py
参数将白名单文件提供给--whitelist
。
对于buildozer,您可以将其添加到buildozer.spec中的android.p4a_whitelist
值。