2009-08-08 6 views
0

Probleme mit der Codierung in meiner Silverlight-Anwendung. Ich brauche Unterstützung für westeuropäische Buchstaben wie æ, ø, å, â und so (Latin1 ??). Aber ich kann es nicht richtig machen. Was sollte anstelle von irgendjemandem sein? habe versucht Codierung enc = Encoding.GetEncoding ("Latin1"); aber keine Namen, die ich als param verwendet wurde erkannt = (. Wenn ich Encoding.Unicode tr.ReadLine() liest die gesamte Datei verwenden und wandeln es aus irgendeinem Grund zu Chinesen.Encoding in Streamreader in meiner Silverlight-Anwendung

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; 
    } 

Antwort

2

Wenn Sie wirklich wollen ISO- Latin-1, können Sie

Encoding.GetEncoding(28591); 

Aber die normale Windows-Westeuropa-Codepage 1252 verwenden:

Encoding.GetEncoding(1252); 

Sie absolut Sind sicher, das ist die Codierung für Ihren Stream obwohl? Heutzutage ist es üblich, UTF-8 zu verwenden. Was erzeugt deine Textressource?

+0

Aber GetEncoding wollen Zeichenfolge als Parameter keine ganze Zahl – Qwark

+0

Nun gibt es * eine * Überladung, die eine Zeichenfolge - aber mindestens im Desktop-Framework, es gibt eine Überladung unter einer Ganzzahl. Gibt es das nicht in Silverlight? Hast du es versucht? –

+0

Ja Ich habe es versucht, Die Datei, die ich habe, ist ein Wörterbuch, das ich von einem Drittanbieter herunterladen. Und ich kenne nicht die Codierung von. Ich denke ich werde etwas schreiben, das die Datei in UTF-8 konvertiert. – Qwark

0

Silverlight (1-4, nicht bekannt über 5) unterstützt keine ANSI-Codierungen (Codepages). Es unterstützt nur Unicode-Kodierungen: UTF8 und UTF16.
Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/system.text.encoding%28VS.95%29.aspx.
Also schlug Coding.GetEncoding (1252) und alle anderen Codepage-Nummern tun nicht arbeiten.
Sie müssen Ihre Codierungsklasse für die benötigte Codepage implementieren. Wenn Sie eine geeignete Implementierung gefunden haben, teilen Sie es bitte, ich wäre interessant.