Формати файлів
Що таке файл TXT? Звичайний текст, кодування та UTF-8
TXT - найпростіший формат документів: лише символи й розриви рядків. Проте кодування, BOM і символи кінця рядка роблять його одним із найпроблемніших. Пояснюємо кожен із цих аспектів.
Автор: Hemen Dönüştür Editör EkibiОпубліковано: 7 хв читання

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-U для кирилиці, Windows-1254 для турецької та багато інших. Проблема в тому, що той самий байт у різних кодових сторінках означає різні літери. Наприклад, байт B3 у Windows-1251 - це "і", а у Windows-1252 - "³". Програма, що вгадала не ту кодову сторінку, відображає текст неправильно.
Остаточним розв'язанням став 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-1252, перетворюється на "мова". Майже кожна проблема з "крякозябрами" - один із цих двох сценаріїв.
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.
Символи кінця рядка
Символ, що позначає кінець рядка, теж залежить від операційної системи:
| Система | Кінець рядка | Байти |
|---|---|---|
| Windows | CRLF | 0D 0A |
| Linux, macOS | LF | 0A |
| Класична Mac OS (до OS X) | CR | 0D |
Багато років Блокнот у Windows розумів лише CRLF, тож файл, створений у Linux, відображався як один довгий рядок. Microsoft оголосила підтримку LF і CR у Блокноті 8 травня 2018 року, а користувачі отримали цю зміну з Windows 10 версії 1809.
Де використовують TXT?
- Нотатки й чернетки: швидкі записи, яким не потрібне форматування.
- Програмне забезпечення: файли README, тексти ліцензій, вихідний код, конфігураційні файли й журнали.
- Обмін даними: прості списки та вивантаження, які передають між системами.
- Довгострокове зберігання: текст, який треба архівувати без залежності від будь-якої програми.
- Доступність і обробка: найчистіші вхідні дані для програм зчитування з екрана, пошукових систем та інструментів аналізу тексту.
Переваги й недоліки
Переваги: його відкриває кожен пристрій і кожна операційна система. Файли крихітні. Немає залежності від версій програм і майже немає ризику пошкодження. Системи контролю версій, як-от Git, можуть показувати зміни рядок за рядком. Він не може містити макросів чи вбудованих об'єктів, що робить його безпечним.
Недоліки: він не може містити форматування, зображень, таблиць чи посилань. Оскільки кодування не записане у файлі, його можна вгадати неправильно. Різниця в символах кінця рядка спричиняє дрібні, але дратівливі проблеми між системами. Якщо вам потрібна структура на кшталт заголовків і списків, краще обрати Markdown.
Якими програмами відкрити TXT?
Блокнот у Windows, TextEdit у macOS, gedit та подібні редактори в Linux відкривають TXT, а браузери можуть показувати текстові файли напряму. Розширені редактори, як-от Visual Studio Code, Notepad++ і Sublime Text, показують кодування й тип кінця рядка в рядку стану та дозволяють змінити їх одним клацанням, тому це найпрактичніші інструменти для діагностики проблем із кодуванням.
Типові проблеми та як їх розв'язати
Літери виглядають як "é" або "пр"
Файл збережено в UTF-8, але програма, що його читає, вважає, що це однобайтова кодова сторінка, як-от Windows-1252. Відкрийте його знову як 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- і big-endian); якщо BOM немає, файл перевіряється на коректність UTF-8; якщо це не коректний UTF-8, він читається як Windows-1254, застаріла турецька кодова сторінка Windows. Тому файли в кирилічній Windows-1251 перед конвертацією варто зберегти як 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 допоможе помітити такий трюк.
Джерела
- IETF RFC 3629: UTF-8, a transformation format of ISO 10646 (листопад 2003 року)
- Консорціум Unicode: FAQ про UTF-8, UTF-16, UTF-32 і BOM
- Роб Пайк: історія UTF-8
- W3Techs: статистика використання кодувань символів на вебсайтах
- Microsoft: Introducing extended line endings support in Notepad (8 травня 2018 року)
- Вікіпедія: ASCII (вторинне джерело)


