目前我有以下代码:
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; }
}
}
当我给它一个欧元符号时,我已经知道当前串行器的问题,它会返回一个?,所以我尝试传递€但是它编码了&并返回€有人知道解决这个问题的优雅方法吗?
非常感谢,
克里斯
答案 0 :(得分:1)
确保您在xml文档中使用正确的编码样式,以及序列化和反序列化步骤。
通过在整个规范和xml文档的处理中使用utf-8编码来确保这一点。
答案 1 :(得分:0)
这不是序列化器,而是控制台。尝试Console.WriteLine("€");
或尝试Console.ReadKey(false);
,然后输入€,即可获得相同的结果。
(假设那是你的控制台字体没有€,默认情况下没有)。
无论如何,€字符不是“特殊字符”,但如果字体没有字形,则字体无法处理ABC。