2014-02-12 4 views
2

Я попытался открыть файл, но все время получал ошибку (ошибка декодирования). Я, наконец, наткнулся на тему в stackoverflow и сделал еще один шаг. Тем не менее, теперь я не получаю никаких результатов, когда пытаюсь перебрать мой файл. Файл - это файл настроек для uTorrent. Я довольно новичок в Python и программировании, поэтому я решил попробовать прочитать и извлечь некоторые параметры из этого файла.UnicodeDecodeError при попытке открыть файл

getDir = r'{0}/{1}/{2}/AppData/Roaming/uTorrent/settings.dat'.format(partition, 
"Users", user) 

data = [] 
try: 
    with codecs.open(getDir, "r") as f: 
     for lines in f: 
      data.append(lines) 
except UnicodeEncodeError: 
    pass 

Я получаю сообщение об ошибке, когда я использую UnicodeEncodeError, но не с другими исключениями. Я попытался с/без codecs.open и указать тип декодирования в открытой функции, я также использовал игнорирование. Код проходит, но список остается пустым.

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 1962: character maps to <undefined> 

Код прекрасно работает с другими файлами в том же каталоге. Я проверил файл, и есть некоторые странные символы. Пример ниже.

RÉ” tÝï:Q‘æІ• 

Настоятельно ценю помощь и благодарность за удивительный сайт!

+2

Вы не указываете кодировку целей. Вы знаете, какой из них? –

+0

Нет, пожалуйста, скажите мне, как я это делаю. – Ekonomipapper

ответ

0

Резюме

Вы должны указать кодировку при открытии файла. Это будет выглядеть так, если кодировка будет «utf-16», хотя из приведенного вами примера может быть и не так.

with codecs.open(getDir, "r", encoding="utf-16") as f: 

Обработка ошибок

Вы можете также указать, как вы хотите обрабатывать ошибки, помещая в «ошибках» аргумент. Это позволяет заменить неизвестные символы или игнорировать их. Смотрите здесь более подробно: http://docs.python.org/2/library/codecs.html#codec-base-classes

Дополнительная литература

Вы, наверное, интересно, как вы можете определить кодировку? Итак, вам нужно сказать, что такое кодировка. Вот ссылка, которая описывает кодирование и декодирование кратким и понятным способом: http://www.joelonsoftware.com/articles/Unicode.html

Смежные вопросы