Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con la StreamReader di .NET

La seguente funzione 
VB.NET
 :
Private Sub AggiustaTxtSAP(ByVal sNomeFileTXTInput As String, ByVal
sNomeFileTXTOutput As String)
Dim sw As StreamWriter
Try
    If File.Exists(sNomeFileTXTOutput) = False Then
        sw = File.CreateText(sNomeFileTXTOutput)
        sw.Flush()
        sw.Close()
    End If
    sw = File.AppendText(sNomeFileTXTOutput)
    Dim sr As StreamReader = File.OpenText(sNomeFileTXTInput)
    Dim s As String
    Do While sr.Peek() >= 0
        s = sr.ReadLine()
        s += Space(iLungRecord - s.Length)
        sw.WriteLine(s)
    Loop
    sr.Close()
    sw.Flush()
    sw.Close()
Catch E As Exception
    Console.WriteLine(E.Message)
End Try
End Sub
mi provoca un errore semantico di questo tipo. La stringa:
    DONA´
viene convertita in:
    DONA
quin di si perde il carattere ´.
Come posso ovviare al problema?
Il problema sembra esserci a loivello dell'istruzione:
    s = sr.ReadLine()
Grazie a chi saprà e vorrà rispondermi.

     s = sr.ReadLine()
direi che il problema č un po' piů sopra.
il metodo opentext, a detta di msdn,
    Opens an existing UTF-8 encoded text file for reading.
e forse la codifica non č quella giusta.
prova a lavorare con:
sr = new streamreader(nomefile, encoding)
cambiando il valore della codifica.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 


Cosa debbo mettere al parametro della streamreder 
'encoding' però?


 


Ciao e grazie



 Cosa debbo mettere al parametro della streamreder 'encoding' però?
vuoi che ti dica la verità?
non me lo ricordo :-)
se non ricordo male nell'help sono indicate le varie alternative... fai
qualche prova e guarda qual'è che fa al caso tuo.


 Cosa debbo mettere al parametro della streamreder 'encoding' però?
oggi mi sento buono.
prova a leggere qui:
http://makeashorterlink.com/?D2D424597


Innanzitutto grazie per il suggerimento! Grazie...
Ho provato con l'istruzione:
Dim srAs New
System.IO.StreamReader(Percorso,System.Text.ASCIIEncoding.Default)
    DONA´
è diventato:
    DONAÂ´
Ideam con l'istruzione:
Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.UTF7)
Ho provato poi con l'istruzione:
Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.Ascii)
ed è diventato:
    DONA?
Ho provato poi con l'istruzione:
Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.UTF8)
ed è diventato:
    DONA
Infine con le due istruzioni:
Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.Unicode)
e
Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.BigEndianUnicode)
si genera un errore...
Accidenti ma possibile che .NET faccia così casino con cose così elementari?
Possibile che non riesca a leggere un qualsiasi carattere e poi scriverlo?
Ciao e grazie ugualmente...
Mario

Dopo quasi infiniti messaggi letti in giro e tentativi andati male qui
riassumo la procedura che legge da qualsiasi fonte dati e scrive in un'altra
(aggiungendovi spazi in coda):
Private Sub AggiustaTxtSAP(ByVal sNomeFileTXTInput As String, ByVal
sNomeFileTXTOutput As String)
Dim sw As New StreamWriter(sNomeFileTXTOutput, False)
Try
    If File.Exists(sNomeFileTXTOutput) = False Then
        sw = File.CreateText(sNomeFileTXTOutput)
        sw.Flush()
        sw.Close()
    End If
    Dim sr As New System.IO.StreamReader(sNomeFileTXTInput,
System.Text.ASCIIEncoding.UTF7)
    Dim s As String
    Do While sr.Peek() >= 0
        s = sr.ReadLine()
        s += Space(iLungRecord - s.Length)
        sw.WriteLine(s)
    Loop
    sr.Close()
    sw.Flush()
    sw.Close()
Catch E As Exception
    Console.WriteLine(E.Message)
End Try
End Sub
Grazie per l'imbeccata.
Ciao, Mario