XmlSerializer特殊字符

时间:2010-08-11 10:51:27

标签: c# .net xml xml-serialization xmlserializer

目前我有以下代码:

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 个答案:

答案 0 :(得分:1)

确保您在xml文档中使用正确的编码样式,以及序列化和反序列化步骤。

通过在整个规范和xml文档的处理中使用utf-8编码来确保这一点。

答案 1 :(得分:0)

这不是序列化器,而是控制台。尝试Console.WriteLine("€");或尝试Console.ReadKey(false);,然后输入€,即可获得相同的结果。

(假设那是你的控制台字体没有€,默认情况下没有)。

无论如何,€字符不是“特殊字符”,但如果字体没有字形,则字体无法处理ABC。