Board logo

标题: [问题求助] VBS获得 110_10 样 GB2312字符 [打印本页]

作者: wankoilz    时间: 2013-3-14 21:33     标题: VBS获得 110_10 样 GB2312字符

本帖最后由 wankoilz 于 2013-3-16 01:53 编辑

今天写了一个vbs,作用是获得以 110 和 10 开头的 GB2312 字符。
就是说这些字符都可以造成和“联通”一样的迷惑windows记事本的作用,你懂的。
  1. Option Explicit
  2. Dim arrH(31),arrL(63)
  3. Dim i,j,str,ado,bin,fso
  4. For i=0 To 31
  5.     arrH(i)=chrb(i+192)
  6. Next
  7. For i=0 To 63
  8.     arrL(i)=chrb(i+128)
  9. Next
  10. For i=0 To 31
  11.     For j= 0 To 63
  12.         str=str&arrH(i)&arrL(j)
  13.     Next
  14. Next
  15. '用fso来保存必须使用unicode格式,这样会被加上小端序BOM(FFEF)
  16. 'Set fso=CreateObject("scripting.filesystemobject")
  17. 'fso.CreateTextFile("c.doc",2,true).Write(str)
  18. Set bin=CreateObject("adodb.stream")
  19. Set ado=CreateObject("adodb.stream")
  20. ado.Mode=3
  21. ado.Type=2
  22. ado.Open
  23. ado.WriteText(str)
  24. bin.Mode=3
  25. bin.Type=1
  26. bin.Open
  27. ado.Position=2    '用二进制流保存,方便去掉头部的BOM
  28. ado.CopyTo bin:ado.Close
  29. bin.SaveToFile "chr.doc",2
  30. bin.Close
复制代码
运行后会得到一个doc文档(都安装word了吧),打开时选择 按照GB2312编码打开,这样就会得到一堆汉字。
新建一个txt,打开,复制任何一个汉字进去,关闭记事本,再打开,结果:字符变了...这和“联通”的原理一样。

至于用fso来保存字符时为什么必须指定unicode格式【CreateTextFile("c.doc",2,true)】,我想大概是因为str对应的unicode字符中有些是ansi中没有的吧,没有细查。
作者: czjt1234    时间: 2013-3-15 06:45

i好,我想了解一下你说的110  10  FFEF 开头的文件格式

请问能给点相关资料的链接吗?
作者: wankoilz    时间: 2013-3-15 07:10

百度搜"unicode utf-8"
作者: Demon    时间: 2013-3-15 17:05

http://demon.tw/programming/utf-8-like-gbk.html
作者: wankoilz    时间: 2013-3-16 01:00

本帖最后由 wankoilz 于 2013-3-16 01:03 编辑

啊,之前看过Demon的一些文章,但确实没看过这一篇。
你的代码直接把那些110_10特点的gb码对应的unicode码直接显示出来,更直观科学一点。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2