Файл - это просто последовательность байтов.Байт - это просто 8-значное (на любом современном оборудовании) двоичное число в диапазоне от 0 до 255, если интерпретируется как без знака, или от -128 до 127, если интерпретируется как со знаком.
Что означают эти байтыдля тех, кто разработан этот конкретный формат файла.Он может содержать последовательность символов, закодированных с помощью какой-то одной кодировки, указанной каким-либо образом или указанной в документации формата файла, он может содержать нечестивый беспорядок в различных кодировках без каких-либо различий между ними (я видел такие вещи на самом деле,критически важные приложения), он может содержать смесь двоичных и текстовых данных или двоичные данные, которые не имеют никакого отношения к каким-либо символам или наборам символов.
Однако, если формат файла не является двоичнымто есть, если он содержит текст и только текст, смешивать наборы символов обычно крайне плохо.Использование чего-то унифицированного и ASCII-совместимого, такого как UTF-8, вероятно, лучший способ.Даже в двоичном формате все равно рекомендуется закодировать все текстовые данные в одной кодировке.UTF-8 или UTF-16 (или даже UTF-32) кажутся там хорошим выбором.Иногда есть разные требования, с которыми вам приходится иметь дело.Например, двоичный формат может иметь «старую» версию заголовка и «новую».Старый может использовать какой-то устаревший набор символов, а новый может использовать какой-то Unicode.Все в порядке.Но когда дело доходит до чисто текстовых форматов, мне еще предстоит увидеть широко используемый формат, который позволяет смешивать наборы символов.Некоторые позволяют вам выбрать один набор символов для каждого файла и поместить маркер где-нибудь (например, XML, HTML, источники Python).