Почему вместо текста кракозябры? Это про UTF-8 и Windows-1251?
Открываю текстовый файл с русским текстом, а вместо букв какая-то ерунда вроде привет. У друга тот же файл открывается нормально. Что это вообще и при чём тут какие-то кодировки UTF-8 и Windows-1251?
2 ответа
Внутри файла буквы хранятся как числа (байты). А кодировка — это «таблица перевода»: какое число какой букве соответствует. Кракозябры появляются, когда файл сохранили в одной кодировке, а открывают в другой — числа читаются по неправильной таблице, и буквы превращаются в мусор.
Две частые кодировки для русского:
- UTF-8 — современный стандарт, понимает все языки мира. Сегодня используют почти везде.
- Windows-1251 — старая русская кодировка, ещё встречается в старых файлах и программах.
Если файл в UTF-8 открыть как Windows-1251 (или наоборот) — будут те самые привет. У друга, видимо, программа угадала кодировку правильно, а у тебя — нет.
Как чинить: в нормальном редакторе (Notepad++, VS Code, Sublime) есть пункт «Кодировка» → «Открыть заново в кодировке…». Попробуй UTF-8 и Windows-1251 — на одной из них текст станет читаемым. Потом пересохрани в UTF-8, чтобы больше не мучиться. Правило на будущее: всегда сохраняй в UTF-8, это стандарт по умолчанию.