Мені було цікаво, чи зберігають деякі текстові файли метод кодування разом із текстовим вмістом для подальшого декодування?
Відповідь Марка Шиманського правильна - у простому текстовому файлі немає явної інформації про кодування - це визначення "простого текстового файлу", "звичайний" посилається на те, що у файлі немає метаданих.
Однак деякі програми розміщують позначку порядку байтів (BOM) у текстових файлах, кодованих як UTF-16 або UTF-32 / UCS-4. BOM насправді не призначений для позначення кодування (він вказує порядок байтів, як говорить назва), але багато додатків використовуватимуть BOM для розпізнавання UTF-16 / UTF-32, тому він служить індикатором кодування.
Або завдання глядача тексту вгадати спосіб кодування для певного текстового файлу, і вгадування може не завжди бути правильним? Якщо так, то як це переглядає текст?
Так, переглядач тексту може лише здогадуватися. Зазвичай використовується деяка евристика:
- У деяких кодуваннях (особливо в UTF-8) не всі послідовності байтів є дійсними. Таким чином, програма може просто спробувати розшифрувати файл як UTF-8. Якщо це вдасться, файл, ймовірно, UTF-8; якщо не вдалося знайти недійсну послідовність байтів, це не так. Так працює, наприклад,
vim
за замовчуванням: спочатку спробує використовувати UTF-8 під час читання файлу; якщо це не вдасться, він повертається до ISO-8859-1.
- У більшості старих 8-бітових кодувань допустима будь-яка послідовність байтів. У такому випадку ви можете іноді здогадуватися про кодування, переглянувши гістограму байтів (частота різних послідовностей байт / байт). Для цього Internet Explorer використовував для "здогадки" про кодування сторінки. Однак це дуже схильне до помилок, тому мало хто робить це.
У більшості випадків програмі потрібно чітко сказати, що таке кодування текстового файлу, інакше воно не зможе правильно прочитати.