EDIT:
Делать слишком много ... это работает для меня с национальными символами
var xs = new XmlSerializer(typeof(ToDoItem));
var stringWriter = new StringWriter();
xs.Serialize(stringWriter, item);
var test = XDocument.Parse(stringWriter.ToString());
... где Предмет - объект, содержащий строки с национальными символами
/ EDIT
Я сделал проект с сериализацией некоторых объектов.
Я скопировал некоторый код из примеров на этом сайте, и все работало замечательно, пока я не изменил среду 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
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;
}
}