0

目前我有以下代码:

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

我的问题是,当我给它一个欧元符号€时,当前序列化程序返回一个?,所以我尝试传递€,但它对 & 进行编码并返回 € 有人知道解决此问题的优雅方法吗?

非常感谢,

克里斯

4

2 回答 2

1

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

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

于 2011-12-11T14:50:06.627 回答
0

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

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

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

于 2010-08-11T11:53:21.733 回答