C#读取Access2003数据库中的OLE对象

Helsing 2011-03-08 07:25:23
如题,OLE对象是一个.XML文件,手动插入,非程序写入。我用以下代码读取,结果凡是中文的地方都为乱码,而且文件的头尾好像都被加了东西。

// dr为OleDbDataReader
// 获取文件流
byte[] buffer = null;
while (dr.Read())
{
buffer = (byte[])dr.GetValue(0);
}
dr.Close();
cmd.Connection.Close();

// 将文件流转成XML文件
if (buffer != null && buffer.Length > 0)
{
System.IO.FileStream fs = System.IO.File.Create(xmlPath);
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs,Encoding.GetEncoding(936));
bw.Write(buffer);
bw.Flush();
bw.Close();
fs.Close();
}

请高手指教
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Helsing 2011-03-09
  • 打赏
  • 举报
回复
找到问题所在了,原来,除了微软的Office文档之外,其余所有的文档在Access中手动插入的时候都会自动打包。用文件流直接读取就会出错,贴上解决问题的地址。
http://www.lxidea.cn/2008/09/28/how-to-deal-with-ole-object-in-access-and-more/
Helsing 2011-03-09
  • 打赏
  • 举报
回复
好像是UTF-8的吧。我现在最想知道的是,手动插入ACCESS的OLE对象是以“包”的形式存在的,这个“包”在用C#读取为文件流的时候也掺杂进去了,如何能去掉这个包?据说,用程序写入的OLE对象就不存在这个“包”。
ACMAIN_CHM 2011-03-08
  • 打赏
  • 举报
回复
你的XML是什么字符集的?

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧