编辑:
做得太多......这对我来说对国民来说很有用
var xs = new XmlSerializer(typeof(ToDoItem));
var stringWriter = new StringWriter();
xs.Serialize(stringWriter, item);
var test = XDocument.Parse(stringWriter.ToString());
... where该项是包含带有国家字符的字符串的对象
/ EDIT
我做了一个带有某些对象序列化的项目。
我从这个网站上的示例中复制了一些代码,一切都运行良好,直到我从3.5直到4.0改变框架ASP.NET ...(并将ISS7 .net设置从v2.0更改为v4.0)
我99%确定这是导致以下错误的原因:
在此更改之前:
var test = XDocument.Parse(SerializeObject("æøåAØÅ", typeof(string)));
test.Save(HttpContext.Current.Server.MapPath("test.xml"));
将使用确切的字符保存xml。
现在它保存了这个: A
我想:有关我可能必须在IIS7中进行的设置的信息
OR
关于如何更改序列化方法以更好地处理国家字符的评论。
这是使用的序列化代码。
private static String UTF8ByteArrayToString(Byte[] characters)
{
var encoding = new UTF8Encoding();
String constructedString = encoding.GetString(characters);
return (constructedString);
}
public static String SerializeObject(Object pObject, Type type)
{
try
{
String XmlizedString = null;
var memoryStream = new MemoryStream();
var xs = new XmlSerializer(type);
var xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.ASCII);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString.Trim();
}
catch (Exception e)
{
//Console.WriteLine(e);
return null;
}
}
答案 0 :(得分:1)
您将文本保存为使用ASCII,然后使用UTF-8对其进行解码并期望它能够正常工作?它不会。无论任何更新或设置如何,此代码都无法正常运行。
无需将XML写入MemoryStream
然后对其进行解码。只需使用StringWriter
:
var xs = new XmlSerializer(type);
var stringWriter = new StringWriter();
xs.Serialize(stringWriter, pObject);
return stringWriter.ToString();