控制台里面编译.java文件,如果源文件字符编码是utf-8或者其他编码格式,就会报错,如图:
如果每次都打开另存为ansi比较麻烦,就想着windows有没有批处理功能。百度了很久批处理没有结果,最后使用vbs来转换。将代码内容保存,文件名为uft8toansi.vbs。就能使用:
uft8toansi srcFile tarFile '另存为
uft8toansi srcFile '进行替换
可以使用绝对路径,也可以将uft8toansi.vbs的路径添加到path中在任意路径下使用。下面代码实现了基本的功能。
'vbs获得当前路径
Set args = WScript.Arguments
If args.Count = 2 Then
strFile= WScript.Arguments(0)
tarFile= WScript.Arguments(1)
ElseIf args.Count = 1 Then
strFile= WScript.Arguments(0)
tarFile= strFile
Else
Msgbox "uft8toansi使用方法为: uft8toansi strFile tarFile"
End If
Set ws=WScript.CreateObject("wscript.shell")
w=ws.CurrentDirectory
'F:\java控制台运行\tmp\test.vbs
Set fso=WScript.CreateObject("scripting.filesystemobject")
'控制台调用时的当前路径 如: F:\java控制台运行\tmp
'如果在任意路径使用set path=path;F:\java控制台运行\tmp\ 然后test.vbs显示的控制台当前路径
Set fs=fso.GetFolder(w)
'Set f=fso.SubiFolders
'For Each uu In f
' t=t & uu.Path & vbcrlf
'Next
'strFilePath = fs.path & strFile
'tarFilePath = fs.path & tarFile
'MsgBox strFilePath & "---superman---" & tarFilePath
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 tarFile, 2
ADOStrm.Close
Set ADOStrm = Nothing