'*******************************************************************
'作用:transfer转换文件编码格式
'参数含义:incode为传入的文件编码 outcode转换后的文件编码
'进行判断文件类型是否是ansi类型,如果不是,提供选择是否需要自动更新文件
'*******************************************************************
Function read(path)
'将Byte()数组转成String字符串
Dim ado, a(), i, n
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1 : ado.Open
ado.LoadFromFile path
n = ado.Size - 1
ReDim a(n)
For i = 0 To n
a(i) = ChrW(AscB(ado.Read(1)))
Next
read = Join(a, "")
End Function Function is_valid_utf8(ByRef input) 'ByRef以提高效率
Dim s, re
Set re = New Regexp
s = "[\xC0-\xDF]([^\x80-\xBF]|$)"
s = s & "|[\xE0-\xEF].{0,1}([^\x80-\xBF]|$)"
s = s & "|[\xF0-\xF7].{0,2}([^\x80-\xBF]|$)"
s = s & "|[\xF8-\xFB].{0,3}([^\x80-\xBF]|$)"
s = s & "|[\xFC-\xFD].{0,4}([^\x80-\xBF]|$)"
s = s & "|[\xFE-\xFE].{0,5}([^\x80-\xBF]|$)"
s = s & "|[\x00-\x7F][\x80-\xBF]"
s = s & "|[\xC0-\xDF].[\x80-\xBF]"
s = s & "|[\xE0-\xEF]..[\x80-\xBF]"
s = s & "|[\xF0-\xF7]...[\x80-\xBF]"
s = s & "|[\xF8-\xFB]....[\x80-\xBF]"
s = s & "|[\xFC-\xFD].....[\x80-\xBF]"
s = s & "|[\xFE-\xFE]......[\x80-\xBF]"
s = s & "|^[\x80-\xBF]"
re.Pattern = s
is_valid_utf8 = (Not re.Test(input))
End Function Function CheckCode(Sourcefile)
'WScript.echo "Checking: " & Sourcefile
Dim stream
set stream = CreateObject("Adodb.Stream")
stream.Type = 1 'adTypeBinary
stream.Mode = 3 'adModeReadWrite
stream.Open
stream.Position = 0
stream.LoadFromFile Sourcefile
Bin = stream.read(2)
s = read(Sourcefile) '读取文件
if is_valid_utf8(s)=-1 then'判断是否UTF-8
Codes = "utf-8"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
'&HEF 239 &HBB 187 &HFF 255 &HFE 254
elseif AscB(MidB(Bin, 1, 1)) = &HEF and _
AscB(MidB(Bin, 2, 1)) = &HBB Then
Codes = "utf-8"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
elseif AscB(MidB(Bin, 1, 1)) = &HFF and _
AscB(MidB(Bin, 2, 1)) = &HFE Then
Codes = "unicode"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
elseif AscB(MidB(Bin, 1, 1)) = &HFE and _
AscB(MidB(Bin, 2, 1)) = &HFF Then
Codes = "unicode big endian"
msgbox Sourcefile&"文件为"&Codes&"非ansi请注意修改"
Codes = "unicode"
else
Codes = "gb2312"
end if stream.Close
set stream = Nothing
CheckCode = Codes
end Function '*******************************************************************
'作用:transfer转换文件编码格式
'参数含义:incode为传入的文件编码 outcode转换后的文件编码
'*******************************************************************
Function transfer(inFile,incode,outcode,outfile)
Set instream = CreateObject("Adodb.Stream")
Set outstream = CreateObject("Adodb.Stream") 'Open input file
instream.Type = 2 'adTypeText
instream.Mode = 3 'adModeReadWrite
instream.Charset = inCode
instream.Open
instream.LoadFromFile inFile 'Read input file
content = instream.ReadText 'Close input file
instream.Close
Set instream = Nothing 'Open output file
outstream.Type = 2 'adTypeText
outstream.Mode = 3 'adModeReadWrite
outstream.Charset = outCode
outstream.Open 'Write to output file
outstream.WriteText content
outstream.SaveToFile outFile, 2 'adSaveCreateOverWrite
outstream.flush 'Close output file
outstream.Close
Set outstream = Nothing
end Function
'*******************************************************************
'作用:GetDirectory获取当前目录
'参数含义:
'*******************************************************************
Function GetDirectory()
Dim WshShell
Set WshShell=CreateObject("WScript.Shell")
GetDirectory = WshShell.CurrentDirectory
Set WshShell = nothing
End Function
'*******************************************************************
'*******************************************************************
'作用:rrubstr取字符串istr中的sign字符串后面的子字符串;从字符串尾部搜索的位置
'参数含义:
'*******************************************************************
Function rsubstr (istr, sign)
Dim fnum,substr
fnum = instrRev (istr,sign) + Len(sign) - 1
substr = Right (istr,Len(istr)-fnum)
rsubstr = substr
End Function
'*******************************************************************
'作用:
'参数含义:
'*******************************************************************
Function Main()
'创建新文件
Set nfso = CreateObject("Scripting.FileSystemObject")
'遍历一个文件夹下的所有文件
Set oFso = CreateObject("Scripting.FileSystemObject")
fold = GetDirectory()&"\"
Set oFolder = oFso.GetFolder(fold)
Dim inFile
isExist = 0
isTransfer = 0
isCount = 0
Set oFiles = oFolder.Files
'对每个文件进行处理
For Each oFile In oFiles
inFile = oFile.path
if rsubstr(inFile,".") <> "vbs" then isCount = isCount +1
incode = CheckCode (infile)
outcode ="gb2312"
if incode <> outcode then
choice = Msgbox(inFile & " is not ansi,请注意!" & vbCrlf & _
" Do you want to transfer it?", vbQuestion + vbYesNo, _
"Output file has been existed")
if choice = vbYES then
transfer inFile,incode,outcode,inFile
'msgbox inFile &"格式转换成功!"
isTransfer = isTransfer +1
end if
isExist = isExist+1
end if
end if
Next
set nfso = nothing
set ntf = nothing
set oFolder = nothing
set oFiles = nothing
msgbox "共检查文件:"&isCount&",发现格式不对文件:"&isExist&",共转换成功文件:"&isTransfer
End Function Main

  

新增检查sql脚本是否符合ANSI编码格式的更多相关文章

  1. flyway实现java 自动升级SQL脚本

    flyway实现java 自动升级SQL脚本 为什么要用Flyway 在日常开发中,我们经常会遇到下面的问题: 自己写的SQL忘了在所有环境执行: 别人写的SQL我们不能确定是否都在所有环境执行过了: ...

  2. mysql命令行导入sql脚本中文变问号问题

    之前一直用工具连接mysql虽然小问题不断也都无伤大雅,最近做金融云项目,只能通过服务器的内网访问数据库,也就是说只能在linux下通过命令行访问,在导入中文的时候发现都变成问号了,经过查询资料解决, ...

  3. 将现有的sql脚本导入 Oracle 数据库,中文乱码问题

    将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...

  4. 如何快速的进行sql脚本升级

    sql脚本升级即从一个老的脚本升级到一个新的全量的脚本.比如公司有某一个项目,有的客户已经用这个项目了,数据库里面去掉以前的初始化数据外,现在还有了客户自己的数据.但是这个版本中有严重的bug,所以为 ...

  5. Jenkins系列之-—08 实现SQL脚本批量执行

    公司内部推广DevOps,所有目前在维护阶段和开发阶段项目全部配置上了自动发布.采用Jenkins+SVN+ANT,之后批量执行SQL语句的实现提上日程 一.环境 Linux环境 安装ANT工具,且下 ...

  6. 数据库优化方案之SQL脚本优化

    随着数据库数据越来越大,数据单表存在的数据量也就随之上去了,那么怎么样让我们的脚本查询数据更快呢? 在这个地方我们主要提到两个数据库类型: 1.MSSQL(该数据库我们通过执行计划来查看数据库性能在哪 ...

  7. access生成sql脚本,通过VBA调用ADOX

    access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...

  8. 让你提前认识软件开发(35):怎样改动SQL脚本以完毕需求?

    第2部分 数据库SQL语言 怎样改动SQL脚本以完毕需求? SQL脚本的改动和C语言代码的改动流程是一样的,都要遵循下面步骤:         第一步,阅读需求.弄清楚自己要完毕什么功能.       ...

  9. .net(C#)在Access数据库中执行sql脚本

    自己写的一个工具类,主要是业务场景的需要. 主要有两个功能: ①执行包含sql语句的字符串 ②执行包含sql语句的文件 调用方式 /// <summary> /// 执行sql语句 /// ...

随机推荐

  1. nginx故障分析与记录

    本文是对于自己遇到nginx故障的一些记录.便于以后解决问题. 时间:2018_05_11 场景一:某天很多客户在群里反应说访问网站不了,报504错误. 环境:首先说明一点的就是公司网站是美国,日本等 ...

  2. [中英对照]User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序

    如对Linux用户态驱动程序开发有兴趣,请阅读本文,否则请飘过. User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序 ...

  3. sizeof数组名和字符指针是有区别的

    sizeof数组名和字符指针是有区别的. #include <stdio.h> #include <stdlib.h> void change(char url[]); int ...

  4. *2.3.4_封装成agent

    上一节在验证平台中加入monitor时,读者看到了driver和monitor之间的联系:两者之间的代码高度相似.其本质是因为二者处理的是同一种协议,在同样一套既定的规则下做着不同的事情.由于二者的这 ...

  5. [转]OData的初步认识 OData v4 Client Code Generator

    本文转自:http://www.cnblogs.com/1zhk/p/5356053.html What – OData是什么? OData - Open Data Protocol,是一个设计和使用 ...

  6. emit 方法表翻译

      Name Description Add Adds two values and pushes the result onto the evaluation stack.添加两个值并将结果推送到评 ...

  7. GPUImage使用

    GPUImage项目下载地址:https://github.com/BradLarson/GPUImage.git 下载项目时如果下载不下来可以直接check一份(之前下载了好多次都是下载失败,最后没 ...

  8. Thymeleaf学习记录(6)--迭代及条件语法

    迭代: 条件选择: IF-THEN: (if) ? (then) IF-THEN-ELSE: (if) ? (then) : (else) 默认: (value) ?: (defaultvalue) ...

  9. 用一个div模拟textarea并实现高度自适应

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. Android ListView实现新闻客户端的新闻内容图文混排

    布局文件: <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/andro ...