← Все вопросы

Почему вместо текста кракозябры? Это про UTF-8 и Windows-1251?

Задан 5 месяцев назад498 просмотров2 ответа
7

Открываю текстовый файл с русским текстом, а вместо букв какая-то ерунда вроде привет. У друга тот же файл открывается нормально. Что это вообще и при чём тут какие-то кодировки UTF-8 и Windows-1251?

2 ответа

11
✓ Принятый ответ — помог автору

Внутри файла буквы хранятся как числа (байты). А кодировка — это «таблица перевода»: какое число какой букве соответствует. Кракозябры появляются, когда файл сохранили в одной кодировке, а открывают в другой — числа читаются по неправильной таблице, и буквы превращаются в мусор.

Две частые кодировки для русского:

  • UTF-8 — современный стандарт, понимает все языки мира. Сегодня используют почти везде.
  • Windows-1251 — старая русская кодировка, ещё встречается в старых файлах и программах.

Если файл в UTF-8 открыть как Windows-1251 (или наоборот) — будут те самые привет. У друга, видимо, программа угадала кодировку правильно, а у тебя — нет.

5

Как чинить: в нормальном редакторе (Notepad++, VS Code, Sublime) есть пункт «Кодировка» → «Открыть заново в кодировке…». Попробуй UTF-8 и Windows-1251 — на одной из них текст станет читаемым. Потом пересохрани в UTF-8, чтобы больше не мучиться. Правило на будущее: всегда сохраняй в UTF-8, это стандарт по умолчанию.

Ваш ответ

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