ошибка кодирования Python - PullRequest
       0

ошибка кодирования Python

0 голосов
/ 03 августа 2011

Что делать с такой ошибкой?Вы читаете строки из файла.Вы не знаете кодировку.

Что означает «байт 0xed»?Что означает «позиция 3792»?

Я постараюсь ответить на этот вопрос сам и сделать репост, но меня немного раздражает, что я трачу столько, сколько рассчитываю.Существует ли метод «заткнись / игнорировать и продолжить» для преодоления неизвестных кодировок?Я просто хочу прочитать текстовый файл!

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    for x in fin:
  File "/bns/rma/local/lib/python3.1/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 3792: ordinal not in range(128)

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

0xed - это код Unicode для í, который содержится во входных данных в позиции 3792 (то есть, если считать, начиная с первой буквы, 3792-я буква будет í).

Вы используете кодек ascii для декодирования файла, но файл не кодируется в ascii, попробуйте вместо этого использовать кодек с поддержкой Unicode (utf_8 возможно?), Или, если вы знаете кодировку, использованную для записивыберите соответствующую кодировку из полного списка доступных кодеков .

0 голосов
/ 03 августа 2011

Я думаю, что нашел способ быть глупым :):

fin = (x.decode('ascii', 'ignore') for x in fin)

for x in fin: print(x)

где ошибки = «игнорировать» могут быть «заменить» или что-то еще. По крайней мере, это соответствует идиоме «мусор в мусоре», который я ищу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...