2011-11-11 6 views
17

Non riesco a leggere quei caratteri speciali Ho provato come questocome leggere carattere speciale come E, A e altri in C#

primo modo #

string xmlFile = File.ReadAllText(fileName); 

secondo modo #

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

Ma entrambe le istruzioni non comprendono quei caratteri speciali. Come devo leggere?

UPDATE ###

cerco anche tutte codifica con

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

, ma continuo a non capire quei caratteri speciali.

+1

come si fa a sapere il vostro programma non accetta questi personaggi? cosa stai facendo con loro? se li stai sputando alla console potrebbe essere che il tuo terminale non li visualizza correttamente, ma li stai leggendo bene. – mpen

+1

Cosa non viene letto correttamente? Mostra una riga di testo di esempio con i dati che vengono letti erroneamente, il risultato che osservi, il risultato che ti aspetti e il modo in cui hai effettuato l'osservazione. –

risposta

40

Non esiste una cosa come "carattere speciale". Quello che probabilmente sono estesi caratteri ascii dal set latino1 (iso-8859-1). Potete leggere quelli fornendo la codifica esplicitamente al lettore di flusso (altrimenti si assumerà UTF8)

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

Grazie mille. Hai risolto il mio problema. – kevin

+2

string [] lines = File.ReadAllLines (fileName, System.Text.Encoding.GetEncoding ("iso-8859-1")); funziona anche perfettamente –

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

StreamReader utilizza UTF8 per impostazione predefinita. –

+0

sì, lo so. ma ho provato a leggere un file di testo contenente accenti ed ecc. e lo restituisce qualcosa del tipo: ?? invece di "á" per esempio. Ho impostato la codifica su utf8 (come suggerito qui) e questo ha funzionato correttamente. – Kakashi

+0

hmm Non sono sicuro ... dovrei guardare il codice e il file effettivo per vedere cosa stava succedendo lì. Ma in base a questo http://msdn.microsoft.com/en-us/library/f2ke0fzy.aspx StreamREader init con codifica UTF8 per impostazione predefinita, è stato il caso per quanto ho provato. –

Problemi correlati