none
LINQ TO XML 如何更改encoding ?? RRS feed

  • 問題

  • 如題
    XNamespace xmlns = "http://www.microsoft.com/networking/WLAN/profile/v1";
                XDocument xdoc = new XDocument(
                    new XDeclaration("1.0","US-ASCII",null),
                    ..........
                    .......
                );
    StringWriter sw = new StringWriter();
    xdoc.Save(sw);

    return sw.ToString();

    請問要怎樣改成encoding ASCII??


    不管怎樣它都輸出UTF-16....

     

    感謝回答

    2010年5月27日 下午 12:42

所有回覆

  • 原因應該出在 StringWriter, 因為它的Encoding屬性是ReadOnly, 而且是 System.Text.UnicodeEncoding.

    所以你要建一個自訂類別繼承StringWriter, 並且覆寫StringWriter.Encoding 屬性

    ex:

    static void Main(string[] args)
            {
                WW w = new WW();
                Console.Write(w.Encoding.ToString());
                Console.ReadKey();
            }
            public class WW : System.IO.StringWriter
            {
                public override Encoding Encoding
                {
                    get
                    {
                        return System.Text.Encoding.ASCII;
                    }
                }
            }


    以下是簽名檔, 請勿沒事對號入座
    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年5月27日 下午 07:15
    版主
  • 非常感謝解答~

    想不到這麼麻煩 ~__~

    2010年5月28日 上午 01:58
  • 在美國論壇上有類似的問題討論 : Linq to XML XDeclaration missing from output?

    可以參考 @scott_m 的作法, 強制將 encoding 輸出為 UTF-8...

     


    chhuang - There's more than one way to do it.
    2010年6月5日 上午 04:47