У меня есть проблема читает текстовый файл для вставки в БД таблицы MySQL, të съязвил этого кода:латинские буквы с острым: DjangoUnicodeDecodeError
файл содержит в первой строке: «aclaración»
archivo = open('file.txt',"r")
for line in archivo.readlines():
....body = body + line
model = MyModel(body=body)
model.save()
я получаю DjangoUnicodeDecodeError: кодек
'utf8' не может декодировать байт в позиции 8: недействительные данные. Вы прошли в 'aclaraci \ xf3n' (type 'str') Unicode error hint
Строка, которая не может быть закодирована/расшифрована, была: araci n.
Я попытался body.decode ('UTF-8'), body.decode ('Latin-1'), body.decode ('ISO-8859-1') без решения.
Вы можете мне помочь? Любой намек оценивается :)
Спасибо Алекс, отвечая на ваш вопрос, здесь:> manage.py обстреливать Python 2.5.4 (InteractiveConsole) >>> а = 'A' >>> '\ xa0' >>> а. decode ('iso-8859-1'). encode ('utf-8') '\ xc2 \ xa0' >>> test = unicode (a) Traceback (последний последний звонок): Файл "" , строка 1, в UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xa0 в позиции 0: порядковый номер не в диапазоне (128) –
panchicore
В 'test = unicode (a)' вы неявно используете ascii-кодек, так как сообщение об ошибке так ясно говорит вам, поэтому, конечно, это не удается. Используйте 'unicode (a, 'iso-8859-1')', если вы знаете, что закодировано в ISO-8859-1. Если вы назначили результаты последовательности кодирования/декодирования другой переменной, скажем, b, 'unicode (b, 'utf-8')' будет работать. Etc и т. Д. Возможно, вы просто вызываете кодировку и декодируете этот путь, а затем и НЕ назначаете, а затем используете их результаты ...?! Помните, что строки неизменяемы, поэтому вызовы методов не изменяют их: они возвращают РЕЗУЛЬТАТЫ (назначают их и используют их!). –