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 に答える