Возникает ошибка кодировки utf-8
Учился работать с файлами и тут такое, нормальное решение найти не могу. С некоторых позиций всё нормально, а с некоторых нет. Возникает ошибка:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
Файл пробовал удалять, помогает только замена кодировки на cp1251. Подскажите пожалуйста, что я делаю не так.
a1 = [1,2,3,4,5]
a1 = map(str,a1)
str1 = ' '.join(a1)
with open('1.txt','w',encoding='utf-8')as file1 :
file1.write('рак\nкамень ')
file1.write(str1)
with open('1.txt','r',encoding='utf-8' )as file1 :
print(file1.tell())
file1.seek(3)
print(file1.tell())
a3 = file1.read()
print(a3)
Ответы (1 шт):
Автор решения: Ivan Shatsky
→ Ссылка
Метод seek() принимает в качестве аргумента смещение в байтах. Вызвав seek(3), вы сместили позицию в файле на 3 байта вперёд. В кодировке UTF-8 кириллические буквы занимают по два байта:
р а к
0xD1 0x80 0xD0 0xB0 0xD0 0xBA
^ позиция в файле после seek(3)
Валидный символ в кодировке UTF-8 не может начинаться с байта 0xB0, отсюда и ошибка, которую вы получаете.