2011-11-11 33 views
17

No puedo leer los caracteres especiales Me trataron como estocómo leer el carácter especial como E, A y otros en C#

primera forma #

string xmlFile = File.ReadAllText(fileName); 

segundo camino #

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
StreamReader r = new StreamReader(fs); 
string s = r.ReadToEnd(); 

Pero ambas declaraciones no comprenden esos caracteres especiales. ¿Cómo debo leer?

ACTUALIZACIÓN ###

También trato de toda la codificación con

string xmlFile = File.ReadAllText(fileName, Encoding.); 

pero todavía no entiendo esos caracteres especiales.

+1

¿cómo sabes su programa no está aceptando esos personajes? ¿Qué estás haciendo con ellos? Si los escupes de nuevo en la consola, es posible que tu terminal no los muestre correctamente, pero los estás leyendo bien. – mpen

+1

¿Qué no se lee correctamente? Muestre una línea de texto de muestra con datos que se leen mal, el resultado que observa, el resultado que espera y cómo realizó la observación. –

Respuesta

40

No hay tal cosa como "carácter especial". Lo que probablemente son los caracteres ascii extendidos del conjunto latin1 (iso-8859-1). Usted puede leer las de suministro de codificación de forma explícita para el lector corriente (de lo contrario se asumirá UTF8)

using (StreamReader r = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1"))) 
    r.ReadToEnd(); 
+1

Muchas gracias. Has resuelto mi problema. – kevin

+2

cadena [] lines = File.ReadAllLines (fileName, System.Text.Encoding.GetEncoding ("iso-8859-1")); también funciona perfecto –

2

usted tiene que decir el StreamReader que usted está leyendo Unicode, como así

StreamReader sr = new StreamReader(stream, Encoding.Unicode); 

Si el archivo es de algún otro encoding, specify it as the second parameter

3
StreamReader sr = new StreamReader(stream, Encoding.UTF8) 
+0

StreamReader usa UTF8 de forma predeterminada. –

+0

sí, lo sé. pero intenté leer un archivo de texto que contenía acentos, etc. y el resultado es algo así como: ?? en lugar de 'á' por ejemplo. Configurando la codificación a utf8 (como se sugiere aquí) y funcionó bien. – Kakashi

+0

hmm No estoy seguro ... Tendría que mirar el código y el archivo real para ver qué estaba pasando allí. Pero de acuerdo con este http://msdn.microsoft.com/en-us/library/f2ke0fzy.aspx, el inicio de StreamReader con codificación UTF8 por defecto y ese ha sido el caso por lo que he intentado. –

Cuestiones relacionadas