Como usar o ReadAllText quando a codificação de arquivos é desconhecida

Estou lendo um arquivo comReadAllText

    String[] values = File.ReadAllText(@"c:\\c\\file.txt").Split(';');

    int i = 0;

    foreach (String s in values)
    {
        System.Console.WriteLine("output: {0} {1} ", i, s);
        i++;
    }

Se eu tentar ler alguns arquivos, às vezes recebo o caracter errado (para ÖÜÄÀ ...). A saída é como '?', É porque há algum problema com a codificação:

output: 0 TEST
output: 1 A??O?

Uma solução seria definir a codificação em ReadAllText, vamos dizer algo comoReadAllText(@"c:\\c\\file.txt", Encoding.UTF8) Isso poderia resolver o problema. Mas e se eu ainda conseguisse '? como saída? E se eu não souber a codificação do arquivo? E se todos os arquivos tivessem uma codificação diferente? Qual seria a melhor maneira de fazer isso com c #? Obrigado

questionAnswers(2)

yourAnswerToTheQuestion