Shull
@Shull
хочу быть хорошим IT-шником

Почему ломается кодировка в Python?

Я хочу урезать текстовой файл до 7 символов.
Пока в текстовом файле латиница - всё идёт хорошо:
#vsem privet
x=open("hello.txt","r+",encoding="utf-8")
x.truncate(7)
#vsem pr

Однако, если в файле есть кириллица - то оставшиеся символы превращаются в мешанину:
#всем привет
x=open("hello.txt","r+",encoding="utf-8")
x.truncate(7)
#все

Что делать, как быть?

P.S: кодировка файлов hello.txt и 1.py - utf-8
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Кириллические символы в UTF-8 кодируются двумя байтами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
yupiter7575
@yupiter7575
Python программист
Ну для начала, файлы в пайтоне открываются через конструкцию with ... as.
И если возникают проблемы с кодировкой все бегут к божеству по имени io.open
Ответ написан
romesses
@romesses
Backend инженер
Python3
with io.open("hello.txt", "r", encoding="utf-8") as f:
     s = f.read() # в строке будут декодированные кириллические символы
     print( s )
     print( s[:7] ) # используем срез
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы