Перейти к основному содержимому

Форматы файлов

Что такое файл TXT? Простой текст, кодировки и UTF-8

TXT - самый простой формат документов: только символы и переводы строк. Но кодировки, BOM и окончания строк делают его одним из самых капризных. Разбираем каждый из этих моментов.

Автор: Hemen Dönüştür Editör EkibiОпубликовано: 7 мин чтения

Значок файла с надписью TXT

TXT - самый простой формат документов на компьютере: ни полужирного, ни шрифтов, ни верстки, только символы и переводы строк. Благодаря этой простоте он предельно переносим. Текстовый файл, написанный пятьдесят лет назад, можно открыть и сегодня, а то, что вы напишете сейчас, скорее всего, будет открываться и через десятилетия. Но «простой текст» не так прост, как кажется. Буквы, превратившиеся в «Ã©», «?» или «кракозябры», строки, слипшиеся в одну, невидимый символ в начале файла: все это следствия одной скрытой детали файла TXT, его кодировки символов. В этой статье объясним, как устроены файлы TXT и как исправлять эти проблемы.

Что такое файл TXT?

Файл с расширением .txt не содержит ничего, кроме текстовых символов. В нем нет заголовка, метаданных и форматирования; каждый байт относится к самому тексту. Ключевой вопрос в том, какой байт обозначает какой символ. Это соответствие называется кодировкой символов, и файл TXT обычно не сообщает, какую кодировку он использует. Программе, которая его открывает, приходится угадывать.

Краткая история: от ASCII до UTF-8

ASCII впервые опубликован в 1963 году как ASA X3.4-1963. Он использует 7 бит и определяет 128 символов: английский алфавит, цифры, знаки препинания и управляющие символы вроде перевода строки. Буквы вроде é, ñ, ö, а также вся кириллица в ASCII не входят.

Чтобы закрыть этот пробел, появились кодовые страницы, которые отдавали оставшиеся 128 значений 8-битного байта под разные языки: Windows-1252 и ISO-8859-1 для западноевропейских языков, Windows-1251 и KOI8-R для русского, Windows-1254 и ISO-8859-9 для турецкого и многие другие. Проблема в том, что один и тот же байт в разных кодовых страницах означает разные буквы. Например, байт FD в Windows-1252 означает «ý», а в Windows-1251 означает «э». Программа, угадавшая не ту кодовую страницу, показывает текст неправильно.

Окончательным решением стал Unicode, который присваивает каждому символу каждой системы письма единый номер. UTF-8 - самый распространенный способ превращать эти номера в байты. По рассказу Роба Пайка, Кен Томпсон придумал UTF-8 на бумажной салфетке в закусочной в Нью-Джерси однажды вечером примерно в сентябре 1992 года. Его действующее определение - RFC 3629 от ноября 2003 года: UTF-8 кодирует каждый символ от U+0000 до U+10FFFF от 1 до 4 байтами, а символы ASCII записывает теми же одиночными байтами, что и ASCII.

Насколько доминирует UTF-8, видно по вебу: по данным W3Techs на 15 октября 2026 года, 99,1% сайтов с известной кодировкой используют UTF-8, за ним следуют ISO-8859-1 с 0,8% и Windows-1252 с 0,2%.

Что находится внутри файла TXT?

Символы и байты

Сохраните слово «café» в UTF-8 и в Windows-1252, и вы получите разные байты:

Text:           c   a   f   é
UTF-8:          63  61  66  C3 A9   (5 bytes)
Windows-1252:   63  61  66  E9      (4 bytes)

Программа, читающая файл UTF-8 как Windows-1252, показывает C3 и A9 как два отдельных символа, «Ã©». И наоборот, программа, читающая файл Windows-1252 как UTF-8, считает E9 недопустимым байтом и показывает вместо него «�». Почти любая проблема с искаженными символами сводится к одному из этих двух сценариев. С кириллицей происходит то же самое: русский текст в UTF-8, прочитанный как Windows-1251, превращается в последовательности вроде «РџСЂРёРІРµС‚».

BOM (метка порядка байтов)

Некоторые программы записывают в начало файла UTF-8 байты EF BB BF. Это представление символа U+FEFF в UTF-8, которое используется как подпись «этот файл в UTF-8». RFC 3629 отмечает, что эта подпись всегда выглядит как эти три байта. Согласно FAQ Unicode, BOM в UTF-8 не обязателен и служит только подписью, а в протоколах, которые ожидают символы ASCII в начале файла, его следует избегать. На практике BOM помогает некоторым старым программам Windows и Excel распознать UTF-8, но может ломать скрипты оболочки Unix и файлы конфигурации, которые читают определенные программы.

В UTF-16 BOM еще важнее, потому что он сообщает порядок байтов: FF FE означает UTF-16 little-endian, а FE FF означает big-endian.

Окончания строк

Символ, обозначающий конец строки, тоже зависит от операционной системы:

СистемаОкончание строкиБайты
WindowsCRLF0D 0A
Linux, macOSLF0A
Классическая Mac OS (до OS X)CR0D

Много лет Блокнот Windows понимал только CRLF, поэтому файл, написанный в Linux, отображался одной длинной строкой. Microsoft объявила о поддержке LF и CR в Блокноте 8 мая 2018 года, и до пользователей это изменение дошло в Windows 10 версии 1809.

Где используется TXT?

  • Заметки и черновики: быстрые записи, которым не нужно форматирование.
  • Программное обеспечение: файлы README, тексты лицензий, исходный код, файлы конфигурации и журналы.
  • Обмен данными: простые списки и выгрузки, которые передаются между системами.
  • Долговременное хранение: текст, который нужно архивировать без зависимости от какого-либо приложения.
  • Доступность и обработка: самый чистый входной формат для экранных дикторов, поисковых систем и инструментов анализа текста.

Сильные и слабые стороны

Сильные стороны: открывается на любом устройстве и в любой операционной системе. Файлы крошечные. Нет зависимости от версий программ, а риск повреждения очень мал. Системы контроля версий вроде Git могут показывать изменения построчно. Он не может содержать макросы или встроенные объекты, что делает его безопасным.

Слабые стороны: не может хранить форматирование, изображения, таблицы или ссылки. Поскольку кодировка не записывается в файл, ее можно угадать неправильно. Разница в окончаниях строк вызывает мелкие, но раздражающие проблемы между системами. Если нужна структура вроде заголовков и списков, лучше выбрать Markdown.

Какие программы открывают TXT?

TXT открывают Блокнот в Windows, TextEdit в macOS, gedit и похожие редакторы в Linux, а браузеры умеют показывать текстовые файлы напрямую. Продвинутые редакторы вроде Visual Studio Code, Notepad++ и Sublime Text показывают кодировку и тип окончаний строк в строке состояния и позволяют изменить их одним щелчком, поэтому это самые удобные инструменты для диагностики проблем с кодировкой.

Частые проблемы и их решение

Символы выглядят как «Ã©», «Ã¼» или «РџСЂРёРІРµС‚»

Файл сохранен в UTF-8, но программа, которая его читает, предполагает однобайтовую кодовую страницу, например Windows-1252 или Windows-1251. Откройте его заново как UTF-8 в редакторе, где можно выбрать кодировку. Если CSV или текстовый файл так выглядит в Excel, обычно помогает сохранение в UTF-8 с BOM.

Символы заменены на «?» или «�»

Файл сохранен в устаревшей кодовой странице, а читается как UTF-8. Откройте его в редакторе, выбрав правильную кодовую страницу, и сохраните в UTF-8. Если текст был сохранен с настоящими символами «?», исходные символы утрачены и нужно вернуться к первоисточнику.

Весь текст отображается в одну строку

Старый редактор не понимает окончания строк LF. Воспользуйтесь обновленным Блокнотом или продвинутым редактором либо преобразуйте окончания строк в CRLF.

В начале файла есть невидимый символ

Обычно это BOM. Если скрипт или файл конфигурации выдает ошибку на первой строке, сохраните его как «UTF-8 без BOM».

Советы по конвертации файлов TXT

В нашем конвертере файлы TXT загружаются на наш сервер и удаляются в течение 30 минут. Кодировка определяется автоматически: сначала проверяется BOM (UTF-8, UTF-16 little-endian и big-endian); если BOM нет, файл проверяется на корректность UTF-8; если это не корректный UTF-8, он читается как Windows-1254, устаревшая турецкая кодовая страница Windows. Поэтому файлы в Windows-1251 или KOI8-R перед конвертацией лучше пересохранить в UTF-8. Файлы с большим количеством байтов NUL считаются двоичными, а не текстовыми, и вы увидите сообщение «это не текстовый файл».

  • При конвертации TXT в Word и TXT в PDF каждая строка становится абзацем, а пустые строки сохраняются. Отступы в начале строк (в коде, стихах или пронумерованных пунктах) превращаются в неразрывные пробелы, чтобы не потеряться, а табуляция в начале строки заменяется четырьмя пробелами.
  • TXT в Markdown - хорошая отправная точка, если вы хотите позже дополнить простой текст заголовками и списками.
  • В обратную сторону PDF в TXT и Word в TXT отбрасывают форматирование и разделяют заголовки и абзацы пустыми строками. Создаваемые нами файлы TXT сохраняются в UTF-8 с BOM, чтобы символы с диакритикой и кириллица правильно отображались в таких программах, как Блокнот и Excel.

Часто задаваемые вопросы

В какой кодировке сохранять файл TXT?

Для новых файлов в UTF-8. Она поддерживает все языки и стала почти универсальной в вебе. Не добавляйте BOM, если файл будет читать программа, ожидающая UTF-8 без него; добавьте его, если файл будут открывать в программах вроде Excel.

Чем UTF-8 отличается от UTF-8 с BOM?

Содержимое одинаковое; версия с BOM просто начинается с байтов EF BB BF. Эта подпись помогает некоторым программам определить кодировку, но в других может отображаться как невидимый первый символ.

Чем TXT отличается от RTF?

TXT содержит только символы. RTF передает форматирование, такое как полужирный, курсив, шрифты и таблицы, с помощью управляющих команд внутри текста. Если форматирование не нужно, TXT проще и переносимее.

Как узнать кодировку файла TXT?

Редакторы вроде Visual Studio Code и Notepad++ показывают кодировку в строке состояния. Актуальные версии Блокнота также показывают в строке состояния кодировку и тип окончаний строк.

Может ли файл TXT содержать вирус?

Простой текстовый файл сам по себе не содержит исполняемого кода. Остерегайтесь двойных расширений вроде «документ.txt.exe»; если включить отображение расширений файлов в Windows, этот трюк легко заметить.

Источники

Похожие конвертеры

Все статьи