ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4276|回复: 4

关于“扁担兄损坏文档如何恢复”的思路与尝试

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-11-13 20:03 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

扁担兄的原文是11月13日的贴子:http://club.excelhome.net/viewthread.php?tid=69746

==========================

有意思,我为解决这个问题,发现了很多平时没有注意到的东东!

试了半天,终于发现了问题所在——楼主扁担兄的原文件是XP做的(提示中有“word 9”字样),而我这里是2000(word 8),怪不得替换文件头不成功。

干脆先说结论,后面再谈我的恢复思路:

1、楼主所给的原文件谁也没有办法给你读出来!(除非知道微软的编码方法!),在保证文件“内容部分”的编码没有被损坏的前提下,唯一能读出来的,是这个文档最后一次正确保存时所用的机子、用户与相应的word版本!(为什么会这样要求,我后面会解释。)

2、仅仅就楼主给出的文件来看,肯定是不能恢复了!原因很简单——打开文件时,看似文件内容还在,只是没有正常显示,而事实上文件内容已经“洗白”了,在十六进制编码中“似乎有文字的区域”全是编码“0045595E”,就算现在知道编码“0045595E”对应的中文是哪个字,恢复过来,也不外乎就满篇都是那一个字而已!!

下面给出今后遇到这种现象时,可以一试的解决办法,请注意——必须在被损坏文件所在的机子上,用相同的用户名操作:

假定被损坏的文件为“A.doc”,损坏现象为打开时显示为乱码,或打开时要求你选择打开的编码方式,我是这样解决的——

新建一个文档另存为“B.doc”随便输入一个字,比如“我”,找一个支持十六进制与ASCII编码的编辑工具(网上有下载,或者干脆就用微软dos下的edit.exe也行),分别打开b.doc与a.doc,两相比较,会发现编码中有很多相同的地方。在b.doc中找到“我”字以前的编码,复制粘贴并覆盖掉a.doc前面的编码,保存,退出,再打开,问题不大的话,基本能恢复(我是刚才手工做了一个损坏的doc文件来试的,成功。而我在十六进制下开始没有注意到,在ASCII下才发现楼主用的是XP而我现在用的是2000,文档的编码上可能就有出入)。

如果你用的是win2000以上的话,我推荐你使用命令行下的“文件比较命令”——FC,它可以直接以十六进制、二进制、ASCII方式等对文件进行比较,并生成比较结果,用法:“FC 第一个文件 第二个文件 > 比较结果.txt”(请注意中间有个大于号!“>”号将比较的结果定向导入于结果文件中。),FC详细的使用帮助在命令行下输入FC/?可以得到!也可以直接找微软的帮助文件。

为什么必须要在被损坏文件所在的机子上,用相同的用户名操作呢?

正因为我是用文本工具打开DOC文件的,结果发现文件中除了保存有文章本身的内容外,居然还保存有计算机名、用户名、office版本号、windows根目录路径、上一次是从哪个路径下的哪个文件里复制了内容到本文件中、本文件当前绝对路径、创建与编辑时间………………………………

不知道微软这样搞有没有侵犯用户隐私权的问题?文档中搜集这些信息干什么?但也正因为这个问题,所以,别人的文档,你来替换它的文件头恐怕行不通(这个没法验证,只是我的感觉)! ============================================ 就此问题,再谈点其他的东东——

不知道大家用过命令行下的“FC”没有?这个就是“文件比较命令”,用它能做的事儿还很多,除了像上面解决方法中那样比较文件外,比如这样: 新建A.doc保存在C盘,然后给该文档加密码,加密后另存为B.doc,然后在命令行下输入“C:\fc c:\a.doc c:\b.doc > c:\e.txt”大家想想,a.doc与b.doc的差别只是一个密码的问题,最后你会在记录两相比较的结果的e.txt中得到什么?? 如果你问我——这有什么用?别人加的密的文档你又没有“没有加密的文档”来做比较!那我就无话可说了! 用十六进制工具分别打开a.doc与b.doc,很容易找到“标记”密码的“标签”,这标签可是不会变的哟!! 今后再拿到有密码的文件………………(我只说这是个思路,我没有说过这能拿来干什么!) ============================================ 多做几次上面那样的比较,你很快就能发现Doc文件的其他“标签”,比如,哪两个标签间,是记录文档编码方式、字体字号行距边距……等设置信息的,哪个标签间放的是文档的正文,哪个标签间又记录着文档的“属性”和其它附加信息…… 事实上我们遇到的乱码等问题,不外就是标签被破坏了,或标签内信息丢失,因为“文档编码方式”标签本来就放在文档的“头”部,所以只需要用正确的标签覆盖损坏的就行了。 ============================================ 最后说一下, 毕竟我们不是在搞文档编码方式的破解,上面内容只供大家参考,某些思路,请勿用在不当的地方。

TA的精华主题

TA的得分主题

发表于 2004-11-13 20:31 | 显示全部楼层

七兄辛苦了!

每得七兄手稿,总有惊世之举,小弟受教!一直佩服七兄的阅历和学识何以如此广博!

这本来也只是我想请七兄顾问此事,亦知其难度实为情理之中。

对于FC,我运行了几次,只对于结果看不懂,尽管也进行了二进制的比较文档中也只写了3个字但比较结果看不懂。无论如何知道了这个东东,不是谢谢二字能表达的。

[em17][em17][em23]

TA的精华主题

TA的得分主题

发表于 2004-11-14 08:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

多谢大侠的指教,虽然不能看到所需文件,但是能学到这么多东西,远出乎意料了。

今后还需各位大侠的多多指教哦

TA的精华主题

TA的得分主题

发表于 2004-11-14 09:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

这样的秘藉,以后还是多多发表几个。感谢楼主的无私奉献。

TA的精华主题

TA的得分主题

发表于 2004-11-15 16:27 | 显示全部楼层
x4cdWPY1.txt (31.65 KB, 下载次数: 16) 请问楼主,为什么对一个文档A.Doc我加了一个简单密码另存B.DOC后,用FC比较确得出这样一个结果(在附件中)?怎么会有如此多的不同之处呢?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 22:51 , Processed in 0.039733 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表