EDIT:XMLシリアル化の国家文字エラー
すぎ....これは国家の文字
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を保存するでしょう。
今では、この保存されます:私は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;
}
}
よく - 私の悪い。結果はメモリに保存され、ファイルに保存されることはありませんでしたので、それは問題ではありませんでした。しかし、 - 私はあまりにも多くのことをしていることを知り、あなたの例は私にそれを切り捨てることを可能にしました。シリアライズされたオブジェクトは、もちろん文字列の例よりも複雑でしたが、問題はありません – Steen
結果がファイルに保存されたことは決してありません。あなたが(間接的に)した文字列を 'byte []'に変換すると、エンコーディングが使用されます。 – svick