前往顾页
以后地位: 主页 > 收集编程 > Jsp实例教程 >

利用vbs脚本处理axure天生chm乱码

时候:2012-08-31 00:34来源:知行网www.zhixing123.cn 编辑:麦田守望者

比来做原型设想,用到了axure。做好后需求公布给其他人检察,弄一堆html页面总归感受有些混乱,幸亏axure供应了打包成chm文件的服从:在天生原型的时候,公布设置中勾选“建立HTML帮忙文件(.chm)”便可。记得要装置Microsoft的HTML Help Workshop。

本来“没那么简朴”,如果设想中页面称呼利用了中文(这很一般),直接公布出来的chm文件翻开后页面索引会显现乱码的。固然页面中的内容是一般的,但是这也是影响利用的。

因而问谷歌,本来是因为微软的hhc.exe东西进行编译时默许的是ascii编码,而axure天生的Table of Contents.hhc工程文件是利用utf-8编码,二者不同一自然会乱码了。

找到启事当然也就有处理体例了,利用文本编辑东西翻开Table of Contents.hhc的工程文件(近似maven的pom文件),另存为ascii编码格局。

翻开一个hhp扩展名的文件,双击[OPTIONS]中的Language=那一行,点窜成中文简体,肯定后菜单File->complie从头编译工程便可。

以上为手工的措置体例,偶尔公布一两次还能接管。但是原型一般会改来改去,如许子岂不太愁闷了。因而看到了别的一种半主动的体例——利用vbs脚原本做,在那里看到的健忘了,感谢这位朋友,不美意义啊。

这里飞尘按照本身的需求做了些调剂,将转码后的文件做了一次拷贝,放到和脚本一路的目次,小我感受如许比较便利,不消去一年夜堆文件里去找。

利用的时候需求稍作点窜:
strHHCEXE – hhc东西的途径
strWorkPath – axure原型的输入目次
strFileName – axure工程名

这里弥补一点,为了不天生的chm文件名乱码,axure工程名还是用英文的吧。

完整的vbs脚本以下:
Dim strHHCEXE, strWorkPath, strFileName
strHHCEXE = "D:\HTML Help Workshop\hhc.exe"
strWorkPath = "E:\html_out\"
strFileName = "UI_0.0.1"
Dim strHHCFile, strHHPFile, strCompileCmd
strHHCFile = strWorkPath+"Table of Contents.hhc"
strHHPFile = strWorkPath+strFileName+".hhp"
strCompileCmd = """"+strHHCEXE+""" """+strWorkPath+strFileName+".hhp"""
'将hhc从unicode转换为Ansi
U8ToAnsi(strHHCFile)
'将hhp文件中的0x409(英文),改成0x804(中文)
Dim fso, f, ts, strContent
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(strHHPFile)
Set ts = f.OpenAsTextStream(1, 0)
strContent = ts.ReadAll
ts.close
strContent = Replace(strContent,"=0x409","=0x804")
Set ts = f.OpenAsTextStream(2, 0)
ts.write strContent
ts.close
'从头编译chm文件
Set WshShell = Wscript.CreateObject("WScript.Shell")
'禁止脚本并行,包管从头编译后,再拷贝新文件 - modified by flyash
WshShell.Run strCompileCmd, ,True
'拷贝文件到上传目次 - added by flyash
fso.CopyFile strWorkPath+"\"+strFileName+".chm", ".\", True
function U8ToAnsi(strFile)
dim ADOStrm
dim s
Set ADOStrm = CreateObject("ADODB.Stream")
ADOStrm.Type = 2
ADOStrm.Mode = 3
ADOStrm.CharSet = "utf-8"
ADOStrm.Open
ADOStrm.LoadFromFile strFile
s = ADOStrm.ReadText
ADOStrm.Position = 0
ADOStrm.CharSet = "gbk"
ADOStrm.WriteText s
ADOStrm.SetEOS
ADOStrm.SaveToFile strFile, 2
ADOStrm.Close
Set ADOStrm = Nothing
end function

顶一下
(5)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):Javascript javascript实例教程 JavaScript源代码 JavaScript根本教程
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣