Читая файл на Python, я получил UnicodeDecodeError. Что я могу сделать, чтобы решить эту проблему?

Это один из моих собственных проектов. Позднее это поможет другим людям в игре, которую я играю (AssaultCube). Его цель - сломать файл журнала и облегчить чтение пользователям.

Я продолжал эту проблему. Кто-нибудь знает, как это исправить? В настоящее время я не планирую писать/создавать файл. Я просто хочу, чтобы эта ошибка была исправлена.

Строкой, вызвавшей ошибку, является пустая строка (она остановлена в строке 66346).

Вот как выглядит соответствующая часть моего сценария:

log  =  open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r')
for line in log:

и исключение:

Traceback (most recent call last):
  File "C:\Users\Owner\Desktop\Exodus Logs\Log File Translater.py", line 159, in <module>
    main()
 File "C:\Users\Owner\Desktop\Exodus Logs\Log File Translater.py", line 7, in main
    for line in log:
  File "C:\Python32\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3074: character maps to <undefined>

Ответ 1

Пытаться:

enc='utf-8'
log  =  open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r', encoding=enc)

если он не будет работать, попробуйте:

enc='utf-16'
log  =  open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r', encoding=enc)

вы также можете попробовать

enc='iso-8859-15'

также попробуйте:

enc = 'cp437'

который настолько старен, но имеет "ü" в 0x81, который соответствовал бы строке "üßer", которую я нашел на домашней странице штурмового куба.

если все кодировки неверны, попробуйте связаться с некоторыми из ребят, разрабатывающих штурмовой куб или как указано в комментарии: посмотрите на https://pypi.python.org/pypi/chardet