C # - Linq.to.XML приложение сбой специальных символов - PullRequest
2 голосов
/ 04 сентября 2011

Я использую базу данных XML, которая содержит имена. К сожалению, я живу в Чехии, и в чешских именах много чешских букв. Эти буквы являются š č ř ý ý í ú ů ů. Приложение происходит сбой во время анализа данных каждый раз, когда база данных содержит одну из этих букв.

Отладчик показывает ошибку: «Недопустимый символ в заданной кодировке. Строка 4. Позиция 15».

Мой XML:

<?xml version="1.0" encoding="utf-8"?>
<Players>
 <Player>
  <Name>Karel Čubera</Name>
 </Player>
 <Player>
  <Name>Jiri Vontubas</Name>
 </Player>
 <Player>
  <Name>Jan Vernovsky</Name>
 </Player>
</Players>

Мое приложение:

    static void Main(string[] args)
    {
        XDocument xmlDoc = XDocument.Load("C://Database.xml");
        var XMLdata = from singlePlayer in xmlDoc.Descendants("Player")
                      select new
                      {
                          Name = singlePlayer.Element("Name").Value,
                      };

        foreach (var singlePlayer in XMLdata)
        {
            Console.WriteLine("Player name: " + singlePlayer.Name);
            Console.WriteLine();
        }            
        Console.Read();
    }

Может ли Linq to XML читать эти символы? Я столкнулся с той же проблемой в приложении Windows. Мне действительно нужны эти буквы без них, это просто отстой. :) Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Ваш XML-документ закодирован неправильно. Попробуйте открыть его в Блокноте, выполните Файл-> Сохранить как и выберите UTF-8. Затем снова откройте его и проверьте, все ли правильно.

Как примечание, помните, что шрифт, используемый в консоли, не всегда может отображать все символы Unicode. Если вы установите точку останова, вы сможете проверить, правильно ли загружен файл. Например, он показывает мне Karel Čubera как Karel Cubera

1 голос
/ 04 сентября 2011

Фактическое кодирование файла отличается (ANSI) от написанного в XML-файле (UTF-8).Всегда проверяйте реальную кодировку!

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