2011-07-11 15 views
11

Tengo un problema donde no puedo leer un archivo que contiene caracteres extraños. El archivo, me han dicho, está codificado en formato UTF-8.StreamReader no puede leer correctamente el juego de caracteres extendidos (UTF8)

Aquí es el centro de mi código:

using (FileStream fileStream = fileInfo.OpenRead()) 
{ 
    using (StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.UTF8)) 
    { 
     string line; 

     while (!string.IsNullOrEmpty(line = reader.ReadLine())) 
     { 
      hashSet.Add(line); 
     } 
    } 
} 

El archivo contiene la palabra "achôcre" pero cuando se examina durante la depuración que está añadiendo como "achcre".

(Este es un archivo de lenguaje profano así que me disculpo si hablas francés. Por mi parte, no tienen idea de lo que eso significa)

Respuesta

16

La evidencia sugiere claramente que el archivo es no en formato UTF-8. Pruebe System.Text.Encoding.Default y vea si obtiene el texto correcto; si lo hace, sabrá que el archivo está en Windows-1252 (suponiendo que es la página de códigos predeterminada del sistema). En ese caso, le recomiendo que abra el archivo en el Bloc de notas, luego vuelva a "Guardar como" como UTF-8, y luego puede usar Encoding.UTF8 normalmente.

Otra forma de comprobar en qué codificación está realmente el archivo es abrirlo en su navegador. Si los acentos se muestran correctamente, entonces el navegador ha detectado el conjunto de caracteres correcto, por lo tanto, consulte el menú "Ver/Conjunto de caracteres" para averiguar cuál es el seleccionado. Si los acentos no se muestran correctamente, cambie el conjunto de caracteres a través de ese menú hasta que lo hagan.

+0

Parece que tiene razón. ¡Gracias por la sugerencia del navegador! – PolandSpring

Cuestiones relacionadas