Специальные символы XmlSerializer - PullRequest
0 голосов
/ 11 августа 2010

В настоящее время у меня есть следующий код:

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            var myObject = new MyObject() {Text = "€ 232.22"};

            StringBuilder sb = new StringBuilder();
            var xmlWriterSettings = new XmlWriterSettings();


            XmlWriter writer = XmlWriter.Create(sb, xmlWriterSettings);
            new XmlSerializer(typeof(MyObject)).Serialize(writer, myObject);

            Console.WriteLine(sb.ToString());
            Console.ReadKey();
        }
    }
    [Serializable]
    public class MyObject
    {
        public MyObject()
        {
        }
        [XmlAttribute()]
        public string Text { get; set; }
    }
}

И проблема, у меня есть идентификатор, что в настоящее время сериализатор, когда я даю ему символ евро €, он возвращает?, Так что я попытался передать €, но этокодирует & и возвращает € Кто-нибудь знает элегантный способ решения этой проблемы?

Большое спасибо,

Крис

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

Убедитесь, что вы используете правильный стиль кодирования в самом документе xml сам по себе, а также на этапах сериализации и десериализации.

Вы гарантируете это с помощью кодирования utf-8 на протяжении всей спецификации и обработкиXML-документ.

0 голосов
/ 11 августа 2010

Это не сериализатор, а консоль.Попробуйте Console.WriteLine("€"); или Console.ReadKey(false);, а затем введите €, и вы получите те же результаты.

(Предполагается, что у ваших консольных шрифтов нет символа €, чего по умолчанию нет).

Символ € в любом случае не является «специальным символом», но шрифт не может обрабатывать ABC, если у него нет глифов для них.

...