Почему в .txt файле на Linux появляется «лишний» байт?
Создаю на рабочем столе Linux (Ubuntu 22) пустой текстовый файл 1.txt.
Проверяю в свойствах его размер - 0 байт.
Записываю в файл ровно один любой символ латинского алфавита, сохраняю. Размер файла становится 2 байта.
Почему собственно 2 байта, а не 1 байт?
Символы латинского алфавита кодируются же 8 битами (1 байт).
Если дописать ещё один любой латинский символ или цифру, то размер становится 3 байта.
То есть появление в файле первого символа даёт файлу 2 байта, каждый последующий символ как положено - по одному байту. Если в файле слово из трех букв, то его размер 4 байта и т.д.
Обращаю внимание, что никаких пробелов и переносов строк нет, только латинские буквы (цифры). Регистр букв — т.е. большие прописные или маленькие строчные на результат не влияют. В Debian то же самое. На других дистрибутивах не проверял.
Почему обратил внимание и заинтересовался? Просто накануне вникал в кодирование символов, тестировал немного на Windows 10. Там всё ясно и понятно. Пустой текстовый файл - 0 байт. Каждая латинская буква даёт размеру файла 1 байт. Т.е. всё работает логично.
Итак, откуда лишний байт на Linux и для чего он?
Borankin, Ага, т.е. вы в каком-то редакторе вводите символ и сохраняете файл. Что за редактор? Даже если вы используете одну и ту же программу (например, notepad++), вот вообще не факт, что она ведет себя одинаково в разных системах.
Раз уж вы в линуксе, запустите команду `xxd 1.txt` в консоли и приведите ее вывод. Оно выведет файл в 16-ричном формате - там сразу станет видно, что это за 2 байта.