一次偶然的打开,发现这个bat可以运行,但是打开是乱码,没有仔细想就发论坛求帮助了。
后来拿winhex一看,原来如此。
学习了本帖,你也会做可以运行但是打开乱码的bat文件了。
学习之前先学习一下记事本的几个编码:
ANSI,Unicode。
一下是百度的结果:
ANSI编码:
http://baike.baidu.com/view/185282.htm#sub6215666
引用
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
ANSI编码表示英文字符时用一个字节,表示中文用两个字节,而unicode不管表示英文字符还是中文都是用两个字节来表示。
Unicode编码:
http://baike.baidu.com/view/40801.htm
引用
天多了,大家慢慢看吧,要是看不下去,看下面的总结。
简单的说:例如英文字母,ansi就是一个字节存储,Unicode则是用2个字节存储。再看看little-endian和big-endian
little-endian与big-endian
http://baike.baidu.com/view/2368412.htm好下面开始教程。
如图打开记事本,记录一些数据:
看图吧,哈哈,小小宣传一下。
分别保存为记事本支持的几种类型:ANSI,Unicode,Unicode Big endian,UTF-8。
保存为ansi编码
保存为Unicode编码(默认little-endian)
保存为Unicode big-endian
保存为utf-8编码。
这几个文件保存到桌面。
现在拿出专业工具,
现在打开的是ansi编码的文件,大家看,一个字符用一个字节就能表示完整。
注意图上说的0x0D0A。
Unicode小头位,每个英文字符用2个字节表示。代表cpu系列为Intel的x86系列CPU。
Unicode大头位,这个符合我们的日常规律。但是cpu系列那就是Motorola的PowerPC系列CPU。
这个大家思考,不多做解释了。
好了,有了以上的知识,现在看看这个乱码的bat文件:
现在如何还原这个bat的庐山真面目呢?
[img]http://bbs.crsky.com/1236983883/Mon_1302/6_210844_7933c5ad864b785.png[/img]
[img]http://bbs.crsky.com/1236983883/Mon_1302/6_210844_6ae2bdd957df1b2.png[/img]