2010-08-11 65 views
0

目前,我有以下代碼:?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; } 
    } 
} 

而且這個問題我的ID,目前,當我給它的串行歐元符號€它返回一個,所以後來我試圖通過€但它編碼&並返回€任何人都知道解決這個問題的優雅方法?

非常感謝,

克里斯

回答

0

這不是串行器,它的控制檯。嘗試Console.WriteLine("€");或嘗試Console.ReadKey(false);,然後鍵入€並得到相同的結果。

(假設您的控制檯字體沒有€,默認沒有)。

無論如何,€字符並不是一個「特殊字符」,但是如果一個字體沒有它們的字形,它就無法處理ABC。

1

確保您正確使用xml文檔自身的編碼風格,以及序列化和反序列化步驟。

您可以通過在整個規範和處理xml文檔時使用utf-8編碼來確保這一點。