在我的silverlight应用程序中编码Streamreader

时间:2009-08-08 17:30:46

标签: c# silverlight encoding

在我的silverlight应用程序中无法正确编码。 我需要支持西欧的字母,如æ,ø,å,â等(Latin1 ??)。 但我无法做到对。什么应该而不是SOMEE​​NCODINGHERE?确实尝试过 编码enc = Encoding.GetEncoding(“Latin1”);但没有我用作param的名字被认可=(。 如果我使用Encoding.Unicode tr.ReadLine()读取整个文件并由于某种原因将其转换为中文。

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

2 个答案:

答案 0 :(得分:2)

如果你真的想要ISO-Latin-1,你可以使用

Encoding.GetEncoding(28591);

但正常的Windows西欧代码页是1252:

Encoding.GetEncoding(1252);

您绝对确定这是您的信息流的编码吗?现在使用UTF-8更常见。是什么生成了您的文本资源?

答案 1 :(得分:0)

Silverlight(1-4,不知道大约5)不支持ANSI编码(codepages)。它仅支持Unicode编码:UTF8和UTF16 有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.text.encoding%28VS.95%29.aspx 所以建议使用Encoding.GetEncoding(1252)和任何其他代码页编号工作。
您必须为所需的代码页实现Encoding类。 如果您找到了合适的实施方案,请分享,我会感兴趣。