Кодирование в Streamreader в моем приложении silverlight - PullRequest
0 голосов
/ 08 августа 2009

Возникли проблемы с получением правильной кодировки в моем приложении silverlight. Мне нужна поддержка букв Западной Европы, таких как æ, ø, å, â и т. Д. (Latin1 ??). Но я не могу понять это правильно. Что должно быть вместо НЕКОТОРОГО ЗДЕСЬ? пытался Encoding enc = Encoding.GetEncoding ("Latin1"); но имена, которые я использовал в качестве параметра, не были распознаны = (. Если я использую 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 ]

2 голосов
/ 08 августа 2009

Если вы действительно хотите ISO-Latin-1, вы можете использовать

Encoding.GetEncoding(28591);

Но нормальная кодовая страница Windows Western Europe - 1252:

Encoding.GetEncoding(1252);

Вы абсолютно уверены, что это кодировка вашего потока? В наши дни более распространено использование UTF-8. Что генерирует ваш текстовый ресурс?

0 голосов
/ 03 мая 2011

Silverlight (1-4, не известно о 5) не поддерживает кодировки ANSI (кодовые страницы). Он поддерживает только кодировки Unicode: UTF8 и UTF16.
Подробнее см. http://msdn.microsoft.com/en-us/library/system.text.encoding%28VS.95%29.aspx.
Поэтому предложенные Encoding.GetEncoding (1252) и любые другие номера кодовых страниц работают , а не .
Вы должны реализовать свой класс кодирования для нужной кодовой страницы. Если вы нашли подходящую реализацию, пожалуйста, поделитесь ей, мне было бы интересно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...