Cómo utilizar ReadAllText cuando se desconoce la codificación del archivo

Estoy leyendo un archivo conLeer todoText

    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++;
    }

Si intento leer algunos archivos, a veces recupero el carácter incorrecto (para ÖÜÄÀ ...). La salida es como '?', Es porque hay algunos problemas con la codificación:

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

Una solución sería establecer la codificación en ReadAllText, digamos algo comoReadAllText(@"c:\\c\\file.txt", Encoding.UTF8) Eso podría arreglar el problema. Pero, ¿y si todavía obtendría '?' como salida? ¿Qué pasa si no sé la codificación del archivo? ¿Y qué pasaría si cada archivo tuviera una codificación diferente? ¿Cuál sería la mejor manera de hacerlo con c #? Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta