2009-08-08 14 views
0

J'ai du mal à encoder correctement dans mon application Silverlight. J'ai besoin de soutien pour les lettres de l'Europe occidentale comme æ, ø, å, â et ainsi (Latin1 ??). Mais je ne peux pas le faire correctement. Quel devrait être au lieu de SOMEENCODINGHERE? essayé Encodage enc = Encoding.GetEncoding ("Latin1"); mais aucun nom j'ai utilisé comme param a été reconnu = (. Si je Encoding.Unicode tr.ReadLine() lit le fichier entier et le convertir en chinois pour une raison quelconque.Encodage dans Streamreader dans mon application Silverlight

private Dictionary<int, string> InitDictionary() 
    { 
     var d = new Dictionary<int, string>(); 
     var sri = App.GetResourceStream(new Uri(fileDic, UriKind.Relative)); 
     using (TextReader tr = new StreamReader(sri.Stream, Encoding.SOMEENCODINGHERE)) 
     { 
      int i = 0; 
      string line; 
      while ((line = tr.ReadLine()) != null) 
      { 
       d.Add(i++, line); 
      } 
     } 
     return d; 
    } 

Répondre

2

Si vous voulez vraiment ISO- Latin-1, vous pouvez utiliser

Encoding.GetEncoding(28591); 

Mais la page normale de code Windows Europe de l'Ouest 1252:

Encoding.GetEncoding(1252); 

Êtes-vous absolument sûr c'est l'encodage de votre flux? Ces jours-ci, il est plus commun d'utiliser UTF-8. Qu'est-ce qui génère votre ressource de texte?

+0

Mais GetEncoding veut une chaîne comme paramètre pas un nombre entier – Qwark

+0

Eh bien, il y a * une surcharge * qui prend une chaîne - mais au moins dans le cadre de bureau, il y a une surcharge prenant un nombre entier. Cela n'existe-t-il pas dans Silverlight? L'as tu essayé? –

+0

Oui, je l'ai essayé, Le fichier que j'ai est un dictionnaire que je télécharge à partir d'un fournisseur tiers. Et je ne connais pas l'encodage de. Je pense que je vais écrire quelque chose qui convertit le fichier en UTF-8. – Qwark

0

Silverlight (1-4, ne sait pas environ 5) ne prend pas en charge les codages ANSI (pages de code). Il ne supporte que les encodages Unicode: UTF8 et UTF16.
Voir http://msdn.microsoft.com/en-us/library/system.text.encoding%28VS.95%29.aspx pour plus de détails.
Ainsi suggéré Encoding.GetEncoding (1252) et tous les autres numéros de page de code font pas travail.
Vous devez implémenter votre classe de codage pour la page de codes nécessaire. Si vous avez trouvé une implémentation appropriée s'il vous plaît partagez-la, je serais intéressant.

Questions connexes