Per semplificare questo aspetto, il massimo che conosco sulla codifica del testo ho imparato dall'articolo Joel Spolsky.Come gestisco correttamente UTF-8 nelle risposte web nel mio codice C#?
Attualmente sto scrivendo un sistema web C# per eseguire una query sulla nostra appliance di ricerca Google, leggere i risultati e presentarli all'utente nella nostra interfaccia utente personalizzata. Tuttavia, ci sono problemi di codifica quando sto visualizzando i riepiloghi di testo agli utenti.
Quando interrogo la GSA direttamente in cromo/IE/qualunque cosa, ottengo la seguente risposta
post partita Note No. 8 semi DePaul vs. No. 9 seme USF gioco 6 - Secondo
rotonda
Nel mio codice C#, sto leggendo che la risposta con il seguente codice:
var request = WebRequest.Create(LastQueryUrl);
var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
return null;
using (var reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8))
content = reader.ReadToEnd();
Quando il debug la variabile content
, vedo che stringa trasformato in:
USF gioco 6 seconda
Sono sicuro al 99% che i dati provenienti dal GSA siano in formato UTF-8 a causa di altri punti sul loro xml che lo dichiarano così come da varie informazioni nella documentazione. Anche se, se leggo lo stream utilizzando System.Text.Encoding.Unicode
, non è leggibile alcuno del testo.
Cosa sto facendo male e come posso visualizzare correttamente il testo?
Edit: usando
System.Text.Encoding.GetEncoding("ISO-8859-1")
mi dà
USF gioco 6 Seconda
No punto di domanda, anche se il cruscotto non si presenta.
Il tuo codice sembra corretto. Per aiutarci a identificare il problema, potresti sostituire temporaneamente la codifica con 'System.Text.Encoding.GetEncoding (" ISO-8859-1 ")' e incollare qui la stringa renderizzata? – Douglas
La ragione per cui sto suggerendo ISO-8859-1 (Latin-1) è che, anche se non corrisponde alla codifica originale del tuo testo, fornisce comunque un mapping uno-a-uno tra tutti i valori di 256 byte e un carattere, permettendoci così di dedurre quali valori di byte stai effettivamente ricevendo. – Douglas
Aggiornato con quello. Aiuta, non ancora al 100%. – KallDrexx