C# XML序列化国家字符错误
编辑: 做得太多了。。。。这对我来说很管用C# XML序列化国家字符错误,c#,asp.net,xml-serialization,C#,Asp.net,Xml Serialization,编辑: 做得太多了。。。。这对我来说很管用 var xs = new XmlSerializer(typeof(ToDoItem)); var stringWriter = new StringWriter(); xs.Serialize(stringWriter, item); var test = XDocument.Parse(stringWriter.ToStr
var xs = new XmlSerializer(typeof(ToDoItem));
var stringWriter = new StringWriter();
xs.Serialize(stringWriter, item);
var test = XDocument.Parse(stringWriter.ToString());
…其中项是包含具有国家字符的字符串的对象
var xs = new XmlSerializer(typeof(ToDoItem));
var stringWriter = new StringWriter();
xs.Serialize(stringWriter, item);
var test = XDocument.Parse(stringWriter.ToString());
/编辑
我做了一个项目,对一些对象进行了序列化
我从这个网站上的示例中复制了一些代码,一切都很好,直到我将framework ASP.NET从3.5改为4.0。。。(并将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中进行的设置的信息
或
如何改变序列化方法以更好地处理国家字符
这是使用的序列化代码
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;
}
}
您使用ASCII将文本保存为,然后使用UTF-8对其进行解码,并期望它能正常工作?不会的。不管有什么更新或设置,此代码都无法正常工作 无需将XML写入
内存流
,然后对其进行解码。只需使用:
嗯,我的错。结果保存在内存中,从未保存到文件中,因此这不是问题所在。然而,我发现我做的太多了,而你的例子让我能够消除这一点。序列化对象当然比字符串示例更复杂,但没有任何问题结果从未保存到文件并不重要。当您(间接)将字符串转换为
字节[]
时,将使用编码。