XML e lettere accentate

mercoledì 23 settembre 2009 - 18.12

Gianni77 Profilo | Junior Member

utilizzo questo per caricare gli attributi di una classe da un file xml:

Public Class Impostazioni Public tag as string="" Public Function Load(ByVal File As String) Dim F As New IO.FileStream(File, IO.FileMode.Open) Dim S As New Xml.Serialization.XmlSerializer(Me.GetType) Dim Obj As Impostazioni Try Obj = S.Deserialize(F) Catch Obj = Nothing End Try F.Close() Return Obj End Function End Class

quindi per caricare la classe:

Dim Imp As New Impostazioni Imp = Imp.Load("file.xml")

in pratica se uno degli attributi nel file contiene una lettera accentata (<tag>Cioé</tag>), il file non viene caricato.
Come ovviare a tale problema?

freeteo Profilo | Guru

Ciao,
forse è un problema di codifica, prova a leggere il file su una stringa con "ReadAllText(...)" a e poi fare il parsing di quella come xml, vedi se cambia qualcosa...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Gianni77 Profilo | Junior Member

ReadAllText mi restituisce una stringa, che non posso utilizzare nel "deserializzatore"

Gianni77 Profilo | Junior Member

Ho risolto il problema modificando due righe in questo modo:
Dim F As New IO.StreamReader(File, System.Text.Encoding.Default) Dim S As New Xml.Serialization.XmlSerializer(Me.GetType)

in pratica uso streamreader anzichè filestream (come tra l'altro è consigliato pure da msdn).... se non aggiungo il secondo parametro (System.Text.Encoding) la classe mi viene caricata, solo che al posto delle lettere accentate, appaiono i classici "quadratini", se invece utilizzo System.Text.Encoding.Default, allora va tutto ok, problema risolto.

Arrivati a questo punto mi chiedo: ma poi funzionerà su tutti i pc, anche quelli, ad esempio, giapponesi? Volendo utilizzare l'unicode (premetto: non riesco a districarmi bene nell'ambito dei caratteri, io sono rimasto all'ascii a 7 bit, quindi da qui in poi sono quasi sicuro che scriverò delle baggianate), come mi dovrei muovere?
Ho provato a modificare l'intestazione del file xml da <?xml version="1.0"?> a <?xml version="1.0" encoding="utf-8 oppure utf-32 ecc"?> e modificando il secondo parametro dello streamreader in System.Text.Encoding.Utf32 ecc ecc, ma in questi casi il file non mi viene caricato.
Letture consigliate? Esempi pratici?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5