本帖最后由 wankoilz 于 2013-3-16 01:53 编辑
今天写了一个vbs,作用是获得以 110 和 10 开头的 GB2312 字符。
就是说这些字符都可以造成和“联通”一样的迷惑windows记事本的作用,你懂的。- Option Explicit
- Dim arrH(31),arrL(63)
- Dim i,j,str,ado,bin,fso
- For i=0 To 31
- arrH(i)=chrb(i+192)
- Next
- For i=0 To 63
- arrL(i)=chrb(i+128)
- Next
- For i=0 To 31
- For j= 0 To 63
- str=str&arrH(i)&arrL(j)
- Next
- Next
- '用fso来保存必须使用unicode格式,这样会被加上小端序BOM(FFEF)
- 'Set fso=CreateObject("scripting.filesystemobject")
- 'fso.CreateTextFile("c.doc",2,true).Write(str)
- Set bin=CreateObject("adodb.stream")
- Set ado=CreateObject("adodb.stream")
- ado.Mode=3
- ado.Type=2
- ado.Open
- ado.WriteText(str)
- bin.Mode=3
- bin.Type=1
- bin.Open
- ado.Position=2 '用二进制流保存,方便去掉头部的BOM
- ado.CopyTo bin:ado.Close
- bin.SaveToFile "chr.doc",2
- bin.Close
复制代码 运行后会得到一个doc文档(都安装word了吧),打开时选择 按照GB2312编码打开,这样就会得到一堆汉字。
新建一个txt,打开,复制任何一个汉字进去,关闭记事本,再打开,结果:字符变了...这和“联通”的原理一样。
至于用fso来保存字符时为什么必须指定unicode格式【CreateTextFile("c.doc",2,true)】,我想大概是因为str对应的unicode字符中有些是ansi中没有的吧,没有细查。 |