シリアル化の動作が、モノタッチのシミュレーターとiPadデバイスの違いであるのはなぜですか?シリアル化の動作がUTF-8であると宣言しましたが、シリアル化データをipadデバイスからWCFサービスに送信すると、メッセージをトレースすると、ASCIIに変わります。なぜですか。(そしてシミュレーターではUTF-8でOKです)
シミュレーター/中国語でのトレース:<?xml version = "1.0" encoding = "utf-8"?>..。
iPadデバイス/中国語でのトレース:<?xml version = "1.0" encoding = "us-ascii"?>..。
ところで、静的メソッドXmlSerializeを使用してデータを手動でシリアル化します。
public static string XmlSerialize<T>(T obj)
{
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader reader = new StreamReader(ms, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
public static T XmlDeserialize<T>(string xmlOfObject) where T : class
{
using (MemoryStream ms = new MemoryStream())
{
using (StreamWriter sr = new StreamWriter(ms, Encoding.UTF8))
{
sr.Write(xmlOfObject);
sr.Flush();
ms.Seek(0, SeekOrigin.Begin);
XmlSerializer serializer = new XmlSerializer(typeof(T));
return serializer.Deserialize(ms) as T;
}
}
}