对*.mht文件结构的一个浅显分析

近日,笔者在进行需求分析的过程中,使用到了利用Excel2003文件直接生成.mht档案文件,然后由web系统对.mht文件 进行索引的一个简单应用,引起了笔者对.mht文件结构进行分析的兴趣,经过尝试和分析,特将心得陈述如下,仅供同行参考:

1.利用MSIE直接打开.mht文件,然后在"查看/源文件"中可以对其内容进行分析;

2.笔者发现.mht文件在运行时状态下,其页面内容中包含若干的汉字,但是.mht的源文件中没有任何的汉字内容,进而分析其内容中有无相应的解码引用,唯一发现的是一个引用文件是"http://www.w3.org/TR/REC-html40",但是很遗憾,该文件并不是解码文件,后来,笔者发现所有的类似"&#34920;"结构有重复出现的迹象,于是笔者尝试着复制不同的"&#34920;"保存后在运行时状态时页面内容果然发生了汉字内容的变化,于是笔者断定.mht采用了非常规编码格式,终于在<head></head>声明代码段中发现了"<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">",经过测试,任何采用此编码的htm页面,均能够对类似"&#34920;"结构进行成功解析;

3.笔者的.mht文件由Excel2003文件直接生成,该文件中包含多个worksheet,也就是多个表单内容,如何在.mht中实现集成?在破译了.mht的解码结构后("<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">),很清晰的能够发现.mht文件源代码中包含多段"<html></html>"结构,结构间采用类似"------=_NextPart_01C73A56.E1B7DC30"进行分割,显而易见,N个worksheet内通对应了N个"<html></html>"结构.

4.当然,微软将Excel2003文件直接生成.mht档案文件的过程中采用了javascript脚本技术实现了多个页内容之间的切换,其代码就不在此敷述,有兴趣的读者可以自己自己尝试分析,此处笔者需要特别一提的是微软在javascript脚本中的一个用法,如下:

function fnBuildFrameset()
{
           var szHTML=3D"后续的特殊用法,有点类似于Vb6" ;

           with (document)  {
                open("text/html","replace");
                 write(szHTML);
                 close();
          }

}

5.关于.mht的更多精彩,还望和更多同行共同探讨.

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值