Android上的kivy / Python缺少Unicode编解码器?

马克·兰索姆

我有一个在kivy下运行的程序,该程序在Windows上可以正常运行,但无法在Android(两个平台上均为1.8.0)上打开文件。奇怪的是,错误消息表明当我明确要求utf-8时,它正在尝试对ASCII进行解码。而且文件中的任何地方都没有0xFF字符-我通过od实用程序进行了检查

代码:

try:
    Logger.info('Mark: opening file ' + repr(filename))
    with codecs.open(filename, 'r', encoding='utf_8') as f:
        lines = [line.rstrip(u'\r\n').lstrip(codecs.BOM) for line in f]
except UnicodeDecodeError as e:
    Logger.info('Mark: utf8 load failed: ' + str(e))
    with codecs.open(filename, 'r', encoding='cp1252') as f:
        lines = [line.rstrip(u'\r\n') for line in f]

日志文件:

[INFO              ] Mark: opening file '/mnt/sdcard/My Files/Documents/DVDs.txt'
[INFO              ] Mark: utf8 load failed: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
[INFO              ] Base: Leaving application in progress...
[WARNING           ] stderr: Traceback (most recent call last):
[WARNING           ] stderr:   File "main.py", line 295, in <module>
[WARNING           ] stderr:     app.run()
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/app.py", line 792, in run
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/base.py", line 481, in runTouchApp
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/window/window_pygame.py", line 381, in mainloop
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/core/window/window_pygame.py", line 287, in _mainloop
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/base.py", line 321, in idle
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/clock.py", line 422, in tick
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/clock.py", line 537, in _process_events
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/clock.py", line 309, in tick
[WARNING           ] stderr:   File "main.py", line 266, in select_file_part2
[WARNING           ] stderr:     with codecs.open(filename, 'r', encoding='cp1252') as f:
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/codecs.py", line 884, in open
[WARNING           ] stderr: LookupError: unknown encoding: cp1252

编辑:我输入了一些调试代码来遍历整个列表,发现除了,和各种编解码器之外ascii所有其他代码都丢失latin_1utf

马克·托洛宁

摆脱try / except并查看真正的异常。codecs.BOM是一个字节字符串\xff\xfe,使用默认ascii编解码器将其强制转换为Unicode

>>> import codecs
>>> codecs.BOM
'\xff\xfe'
>>> u'test'.lstrip(codecs.BOM)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Kivy(适用于Android的Python)缺少编解码器

来自分类Dev

如何使用缺少的编解码器从源代码构建 Chromium(在 Windows 上)

来自分类Dev

Ubuntu上的Matlab VideoReader,QuickTime编解码器

来自分类Dev

Android WebRTC 支持的编解码器

来自分类Dev

在Android上的PJSIP 2.5.1上启用和配置OPUS编解码器

来自分类Dev

如何在Android 4.0上获取编解码器列表

来自分类Dev

Android Base64编码和Apache编解码器解码

来自分类Dev

Android媒体编解码器无法实例化“视频/ MP4”类型的解码器

来自分类Dev

使用媒体编解码器,媒体提取器API的Android HLS支持

来自分类Dev

从根本上讲,编解码器到底是什么?

来自分类Dev

.hlist的编解码器上的.dropUnit似乎不起作用

来自分类Dev

如何在Ubuntu Linux上安装H.265 / HEVC编解码器?

来自分类Dev

如何在Ubuntu Linux上安装H.265 / HEVC编解码器?

来自分类Dev

在ubuntu上找不到mp3编解码器

来自分类Dev

.hlist的编解码器上的.dropUnit似乎不起作用

来自分类Dev

音频编解码器dequeueInputBuffer在设备上返回-1

来自分类Dev

如何在Endless OS上免费获取H.264编解码器?

来自分类Dev

Matlab在Ubuntu 16.04上找不到mpeg编解码器

来自分类Dev

如何使用MediaCodec在Android中使用软件编解码器

来自分类Dev

Android中的G729编解码器支持

来自分类Dev

MediaCodec如何在Android框架内找到编解码器?

来自分类Dev

了解Unicode编解码器

来自分类Dev

了解Unicode编解码器

来自分类Dev

哪种AudioEncoder编解码器最适合Android上最高质量的音频录制

来自分类Dev

将ffmpeg OMX编解码器添加到Genymotion Android 4.4.2模拟器

来自分类Dev

将ffmpeg OMX编解码器添加到Genymotion Android 4.4.2模拟器

来自分类Dev

是否可以在Windows 8下的Windows视频版上使用MRLE编解码器进行编码?

来自分类Dev

在hadoop中不带.gz扩展名的文件上使用gzip输入编解码器

来自分类Dev

应该在视频上使用哪种编解码器,以避免在YouTube和Vimeo中重新压缩

Related 相关文章

  1. 1

    Kivy(适用于Android的Python)缺少编解码器

  2. 2

    如何使用缺少的编解码器从源代码构建 Chromium(在 Windows 上)

  3. 3

    Ubuntu上的Matlab VideoReader,QuickTime编解码器

  4. 4

    Android WebRTC 支持的编解码器

  5. 5

    在Android上的PJSIP 2.5.1上启用和配置OPUS编解码器

  6. 6

    如何在Android 4.0上获取编解码器列表

  7. 7

    Android Base64编码和Apache编解码器解码

  8. 8

    Android媒体编解码器无法实例化“视频/ MP4”类型的解码器

  9. 9

    使用媒体编解码器,媒体提取器API的Android HLS支持

  10. 10

    从根本上讲,编解码器到底是什么?

  11. 11

    .hlist的编解码器上的.dropUnit似乎不起作用

  12. 12

    如何在Ubuntu Linux上安装H.265 / HEVC编解码器?

  13. 13

    如何在Ubuntu Linux上安装H.265 / HEVC编解码器?

  14. 14

    在ubuntu上找不到mp3编解码器

  15. 15

    .hlist的编解码器上的.dropUnit似乎不起作用

  16. 16

    音频编解码器dequeueInputBuffer在设备上返回-1

  17. 17

    如何在Endless OS上免费获取H.264编解码器?

  18. 18

    Matlab在Ubuntu 16.04上找不到mpeg编解码器

  19. 19

    如何使用MediaCodec在Android中使用软件编解码器

  20. 20

    Android中的G729编解码器支持

  21. 21

    MediaCodec如何在Android框架内找到编解码器?

  22. 22

    了解Unicode编解码器

  23. 23

    了解Unicode编解码器

  24. 24

    哪种AudioEncoder编解码器最适合Android上最高质量的音频录制

  25. 25

    将ffmpeg OMX编解码器添加到Genymotion Android 4.4.2模拟器

  26. 26

    将ffmpeg OMX编解码器添加到Genymotion Android 4.4.2模拟器

  27. 27

    是否可以在Windows 8下的Windows视频版上使用MRLE编解码器进行编码?

  28. 28

    在hadoop中不带.gz扩展名的文件上使用gzip输入编解码器

  29. 29

    应该在视频上使用哪种编解码器,以避免在YouTube和Vimeo中重新压缩

热门标签

归档