Компьютер - не понимает никак, для него файл остаётся последовательностью нулей и единиц.
Программы - в зависимости от формата файла, некоторые форматы позволяют указывать кодировку в заголовках, мета-данных или где-то ещё, в некоторых форматах в спецификации забита определённая кодировка и ничего угадывать не надо, некоторые (например, текстовые редакторы) по набору байт эвристически стараются угадать, не всегда делают это правильно, а в случае с однобайтовой кодировкой полагаются на текущую локаль в системе. Таблицы кодировок - зашиты в сами программы либо в библиотеки, используемые программами для декодирования (например, iconv). Касательно клавиатуры, в раскладке клавиатуры содержится таблица, какую клавишу с какими модификаторами в какой символ преобразовывать, там не ASCII используется (т.к. ASCII позволяет использовать только ограниченный набор символов - цифры, базовую латиницу и основные знаки пунктуации)