ОС не знает. Шестнадцатеричный редактор, вероятно, автоматически определяет его. Это возможно, если посмотреть на наличие и отсутствие определенных пар байтов, но это не на 100% надежно.
Нет общего флага или свойства, в котором хранится кодировка файла. Вот почему вам часто нужно указывать кодировку вручную при открытии текстового файла.
Один из способов пометить файл UTF-8 или -16 - это BOM , но это не обязательно.