数据库有一个包含XML数据的列和一个包含Base64编码的zip文件的CDATA部分。使用XmlReader,我能够从CDATA部分获得一个字符串,但是在解码之后用代码解压缩字符串,我从解压缩的数据中得到null。请帮忙
case XmlNodeType.CDATA:
string base64EncodedData = xreader.Value;
var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);//convert to bytes
string decoded = Unzip(base64EncodedBytes);
writer.WriteString("decoded:"+decoded);
break;
public static string Unzip(byte[] bytes)
{
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream())
{
using (var gs = new GZipStream(msi, CompressionMode.Decompress))
{
try { gs.CopyTo(mso); }
catch { Console.Write("failed"); }
//CopyTo(gs, mso);
}
return Encoding.UTF8.GetString(mso.ToArray());
}
}
答案 0 :(得分:0)
存储xml的列的数据类型是什么?是XML列吗?您在XML中使用的编码是什么?如果没有指定任何内容,XML将默认为UTF8。但SQL XML列接受UTF-16。