189 messaggi dal 03 ottobre 2006
Sto provando ad usare webclient per leggere un file di testo dal server su una applicazione Silverlight.
Sto usando queste poche istruzioni:

WebClient xmlClient = new WebClient();
xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
xmlClient.DownloadStringAsync(new Uri("gl.txt", UriKind.RelativeOrAbsolute));

void XMLFileLoaded(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
XmlData = e.Result;
}

XmlData è dichiarata come string ma alla fine della lettura del file, se questo contiene delle lettere accentate come è ò à ù ì, me le converte in un carattere strano.
Come faccio a mantenere questi caratteri come li ho scritti io?
Grazie
wmartin ha scritto:
Sto provando ad usare webclient per leggere un file di testo dal server su una applicazione Silverlight.
Sto usando queste poche istruzioni:

WebClient xmlClient = new WebClient();
xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
xmlClient.DownloadStringAsync(new Uri("gl.txt", UriKind.RelativeOrAbsolute));

void XMLFileLoaded(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
XmlData = e.Result;
}

XmlData è dichiarata come string ma alla fine della lettura del file, se questo contiene delle lettere accentate come è ò à ù ì, me le converte in un carattere strano.
Come faccio a mantenere questi caratteri come li ho scritti io?
Grazie


Ciao,
hai provato a calibrare l'encoding a quella dell'XML che cerchi di leggere?
A desempio
xmlClient.Encoding = Encoding.UTF8;

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it
189 messaggi dal 03 ottobre 2006
Si, ho provato le seguenti istruzioni nonostante l'UTF8 sia il default

WebClient xmlClient = new WebClient();
xmlClient.Encoding = System.Text.Encoding.UTF8;
xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
xmlClient.DownloadStringAsync(new Uri("gl.txt", UriKind.RelativeOrAbsolute));

ma non cambia nulla.

Se può aiutare a capire, il carattere numero 117 del testo che sto caricando è una 'è' ma riportando così com'è e.result in un richtextbox mi mostra il carattere formato da un rombo nero con un punto interrogativo bianco all'interno, carattere che non trovo in nessuna tabella di codici ascii.
Non solo, anche se metto una ì oppure ò oppure à viene semper mostrato lo stesso carattere.

Ho provato anche a valutare la seguente istruzione per capire quale fosse il codice restituito dal carattere 'è'
System.Text.Encoding.UTF8.GetBytes(e.Result.Substring(117, 1))
e il risultato è il seguente
{byte[3]}
[0]: 239
[1]: 191
[2]: 189

se valuto poi questa istruzione
(char)(System.Text.Encoding.UTF8.GetBytes(e.Result.Substring(117, 1))[0])
risulta questo:
239 'ï'

a questo punto mi perdo perchè non capisco come un singolo carattere sia espresso tramite tre codici e che comunque lui non mi mostri poi il carattere corrispondente al primo codice (239) nel richtextbox.
Mi sa che sto sbagliando anche le verifiche che sto facendo.
Hai qualche suggerimento per uscirne?
Grazie
wmartin ha scritto:
Si, ho provato le seguenti istruzioni nonostante l'UTF8 sia il default

WebClient xmlClient = new WebClient();
xmlClient.Encoding = System.Text.Encoding.UTF8;
xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(XMLFileLoaded);
xmlClient.DownloadStringAsync(new Uri("gl.txt", UriKind.RelativeOrAbsolute));

ma non cambia nulla.

Se può aiutare a capire, il carattere numero 117 del testo che sto caricando è una 'è' ma riportando così com'è e.result in un richtextbox mi mostra il carattere formato da un rombo nero con un punto interrogativo bianco all'interno, carattere che non trovo in nessuna tabella di codici ascii.
Non solo, anche se metto una ì oppure ò oppure à viene semper mostrato lo stesso carattere.

Ho provato anche a valutare la seguente istruzione per capire quale fosse il codice restituito dal carattere 'è'
System.Text.Encoding.UTF8.GetBytes(e.Result.Substring(117, 1))
e il risultato è il seguente
{byte[3]}
[0]: 239
[1]: 191
[2]: 189

se valuto poi questa istruzione
(char)(System.Text.Encoding.UTF8.GetBytes(e.Result.Substring(117, 1))[0])
risulta questo:
239 'ï'

a questo punto mi perdo perchè non capisco come un singolo carattere sia espresso tramite tre codici e che comunque lui non mi mostri poi il carattere corrispondente al primo codice (239) nel richtextbox.
Mi sa che sto sbagliando anche le verifiche che sto facendo.
Hai qualche suggerimento per uscirne?
Grazie

Ciao,
era un'esempio di codifica, magari non è UTF-8 :D
Se puoi scriverlo, qual è l'URL che interroghi?

Alessio Leoncini (SilverlightItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer @ 5DLabs.it
189 messaggi dal 03 ottobre 2006
E' un file di testo locale nel mio PC per ora, che ho salvato dentro la cartella "ClientBin" è formato anche solo da caratteri accentati...
189 messaggi dal 03 ottobre 2006
Se vuoi il file ora è pubblicato ed è qui:
http://home.wmartin.it/ClientBin/gl.txt
189 messaggi dal 03 ottobre 2006
Nel caso fosse un baco, esistono altri sistemi per leggere un file di testo dal server tramite Silverlight?
Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC