4
Windows에서 제대로 작동하지만 Android에서 파일을 열지 못하는 kivy에서 실행되는 프로그램이 있습니다 (두 플랫폼 모두에서 1.8.0). 이상한 점은 utf-8을 명백히 요구할 때 ASCII를 해독하려는 오류 메시지가 있음을 나타내는 것입니다. 또한 파일에는 0xFF 문자가 포함되어 있지 않습니다. od
유틸리티를 사용하여 확인했습니다.안드로이드에서 kivy/Python의 유니 코드 코덱이 누락 되었습니까?
코드 :
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
편집 : 나는 entire list 통해 갈 디버깅 코드에 넣고 모든 ascii
제외 없어진 것을 발견, latin_1
, 다양한 utf
코덱.
FYI 자동 BOM 운반 사용'UTF-8에 대한 sig'. –
@ MarkTolonen 왜 디코딩 오류가 발생했는지 알아 냈습니다. 고마워요. 그러나 그것은 여전히'cp1252'가 빠진 이유를 설명하지 못합니다. 나는 두 가지 다른 오류가 있었던 것 같아요. –
인코딩이 Android에서 제공되지 않을 수 있습니다. 파이썬의'Lib \ encodings \ cp1252.py' 파일은 존재합니까? –