English 中文(简体)
BOM 数据库储存编码
原标题:BOM encoding for database storage
  • 时间:2009-08-25 09:32:10
  •  标签:

1. Im 采用以下代码对物体进行编号:

public static string Serialise(IMessageSerializer messageSerializer, DelayMessage message)
{
    using (var stream = new MemoryStream())
    {
        messageSerializer.Serialize(new[] { message }, stream);

        return Encoding.UTF8.GetString(stream.ToArray());
    }
}

不幸的是,当我将其留给一个数据库(使用LINQ至)时,然后询问数据库时,Kalling似乎从一个问题标志开始:

?<z:anyType xmlns...

我如何摆脱这种状况? 当我试图利用以下手段去飞行时:

public static DelayMessage Deserialise(IMessageSerializer messageSerializer, string data)
{
    using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
    {
        return (DelayMessage)messageSerializer.Deserialize(stream)[0];
    }
}

我有以下例外:

"Error in line 1 position 1. Expecting element anyType from namespace http://schemas.microsoft.com/2003/10/Serialization/ .. Encountered Text with name , namespace . "

<代码>messageSerializer 使用<代码>DataContractSerializer如下:

public void Serialize(IMessage[] messages, Stream stream)
{
    var xws = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment };
    using (var xmlWriter = XmlWriter.Create(stream, xws))
    {
        var dcs = new DataContractSerializer(typeof(IMessage), knownTypes);
        foreach (var message in messages)
        {
            dcs.WriteObject(xmlWriter, message);
        }
    }
}

public IMessage[] Deserialize(Stream stream)
{
    var xrs = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
    using (var xmlReader = XmlReader.Create(stream, xrs))
    {
        var dcs = new DataContractSerializer(typeof(IMessage), knownTypes);
        var messages = new List<IMessage>();
        while (false == xmlReader.EOF)
        {
            var message = (IMessage)dcs.ReadObject(xmlReader);
            messages.Add(message);
        }
        return messages.ToArray();
    }
}
最佳回答

不幸的是,当我将其留给一个数据库(使用LINQ至)时,然后询问数据库时,Kalling似乎从一个问题标志开始:

? <z:any 类型

为支持统法协会的特性,没有建立你的数据库。 你们写了一幅插图,其中包括一个OM,数据库可以将其储存起来,使其陷入困境? 之后,你又重新读作XML,? 案文内容不属于根本内容,而且你有错误。 (你只能有根基之外的白色空间。)

BOM为什么会到那里? 由于Microsoft love,即使不需要(而且从来没有,UTF-8)。 解决办法是让你自己了解UTF8编码,而不是使用内在编码。 UTF8, 并告诉你,他们不希望打 st:

Encoding utf8onlynotasridiculouslysucky= new UTF8Encoding(false);

然而,这确实掩盖了真正的问题,即数据库配置。

问题回答

暂无回答




相关问题
热门标签