2009-10-07 8 views
1

Je télécharge une page Web, puis charge les chaînes de la page dans une interface utilisateur WPF. Une chaîne a un caractère accentué: "Ãine". Dans le débogueur, la chaîne semble très bien, mais lorsqu'elle est ajoutée à un ListBox WPF, elle apparaît comme suit: Ã [] ine, où [] est un seul symbole rectangulaire. Lorsque je copie le texte à partir de l'interface utilisateur du débogueur et le collez, un espace apparaît après le. Cet 'espace' apparaît comme le symbole rectangulaire lorsqu'il est affiché par WPF.Pourquoi WPF n'affiche-t-il pas correctement un caractère accentué?

Est-ce que quelqu'un sait ce qui se passe?

+0

J'imagine que dans WPF vous avez affaire à UTF-8, et la listbox attend Latin-1 (ou similaire). –

+0

ListBox accepte sûrement le format dans lequel System.String est (Unicode?). La chose étrange est que l'interface utilisateur du débogueur VS est bien avec la chaîne. C'est peut-être un problème avec le téléchargement depuis le web. – mackenir

Répondre

0

Le correctif est de télécharger la page web comme ceci:

WebClient c = new WebClient(); 
var bytes = c.DownloadData(url); 
UTF8Encoding utf8 = new UTF8Encoding(); 
var s = utf8.GetString(bytes); 

au lieu de comme ceci:

WebClient c = new WebClient(); 
var s = c.DownloadString(url); 

WebClient.DownloadString n'a pas pu télécharger correctement la page et le convertir en une chaîne.

0

Votre chaîne peut contenir un caractère "invisible" provenant d'un copier/coller ou de quelque chose. Essayez de réécrire "caractère" par caractère.

+0

La chaîne est extraite d'une page Web, donc l'édition manuelle n'est pas une solution. – mackenir

Questions connexes