当前位置: 主页 > 365bet官方平台 >

文件编码交换模块VB(Ansi支持,UTF

2019-01-30 23:03
VB文件编码交换模块支持Ansi,UTF-8,Unicode(Little Endian)和Unicode Versian编码之间的转换。 VBScript代码copycode PrivateDeclareFunctionMultiByteToWideCharLibkernel32。 DLL(ByValCodePageAsLong,ByValdwFlagsAsLong, VB文件编码交换模块支持Ansi,UTF-8,Unicode(Little Endian)和Unicode Versian编码之间的转换。
VBScript代码copycode
PrivateDeclareFunctionMultiByteToWideCharLibkernel32。
DLL(ByValCodePageAsLong,ByValdwFlagsAsLong,ByVallpMultiByteStrAsString,ByValcchMultiByteAsLong,ByVallpWideCharStrAsString,ByValcchWideCharAsLong)aslong
PrivateDeclareFunctionWideCharToMultiByteLibkernel32。
DLL(ByValCodePageAsLong,ByValdwFlagsAsLong,ByVallpWideCharStrAsLong,ByValcchWideCharAsLong,ByRazucces活性),为对,全球性,例如:
PrivateConstCP_ACPAsLong = 0
PrivateConstCP_UTF8AsLong = 65001
'Ansi平面文本文件转换为Unicode文本文件(LittleEndian)
PrivateFunctionAnsiToULE(ByValInputansifileAsString,ByValOutputULEfileAsString)AsBoolean
DimFilebyte()AsByte,sAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUnicodeBufferAsString
OnErrorResumeNext
'打开ANSI Inputansifile平面文本文件
FileNumber = FreeFile
IfDir(Inputansifile)= ThenAnsiToULE = False:ExitFunction
OpenInputansifileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
SANSI =中StrConv(Filebyte,vbUnicode)“,以显示字符串VB6转换
retLen =的MultiByteToWideChar(CP_ACP,0,SANSI,LENB(SANSI),vbNullChar,0)“的获取retLen转换所需的空间量
sUnicodeBuffer =字符串$(LENB(SANSI),vbNullChar)“来设置缓冲区的大小
IfretLen0Then
retlen = MultiByteToWideChar(CP_ACP,0,Sansi,LENB(sansi),sUnicodeBuffer,retlen)
否则
AnsiToULE = False:ExitFunction
ENDIF
'另存为Unicode文本文件(LittleEndian)OutputULEfile
IfretLen0Then
FileNumber = FreeFile
IfDir(OutputULEfile)ThenKill(OutputULEfile)
OpenOutputULEfileForBinaryAs#文件号
#FileNumber,HFEFF'和Unicode(LittleEndian)标题BOM品牌FFFE。
插入#FileNumber并保存sUnicodeBuffer'文件的内容
关闭#文件编号
AnsiToULE =真
否则
AnsiToULE = False:ExitFunction
ENDIF
endfunction下面
'Ansi将平面文本文件转换为UnicodeBigEndian文本文件
PrivateFunctionAnsiToUBE(ByValInputansifileAsString,ByValOutputUBEfileAsString)AsBoolean
DimFilebyte()AsByte,Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUnicodeBufferAsString
迪米很长
OnErrorResumeNext
'打开ANSI Inputansifile平面文本文件
FileNumber = FreeFile
IfDir(Inputansifile)= ThenAnsiToUBE =假:ExitFunction
OpenInputansifileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
SANSI =中StrConv(Filebyte,vbUnicode)“,以显示字符串VB6转换
retLen =的MultiByteToWideChar(CP_ACP,0,SANSI,LENB(SANSI),vbNullChar,0)“的获取retLen转换所需的空间量
sUnicodeBuffer =字符串$(LENB(SANSI),vbNullChar)“来设置缓冲区的大小
IfretLen0Then
retlen = MultiByteToWideChar(CP_ACP,0,Sansi,LENB(sansi),sUnicodeBuffer,retlen)
否则
AnsiToUBE = False:ExitFunction
ENDIF
'另存为文本文件UnicodeBigEndian OutputUBEfile
IfretLen0Then
ReDimFilebyte(LenB(sAnsi)-1),Fbyte(LenB(sAnsi)-1)
Filebyte = StrConv(sUnicodeBuffer,vbFromUnicode)
Fori = 0ToUBound(文件字节)
IfiMod 2 = 0
Fbyte(i)= Filebyte(i + 1)
否则
Fbyte(i)= Filebyte(i-1)
ENDIF
下一个
FileNumber = FreeFile
IfDir(OutputUBEfile)ThenKill(OutputUBEfile)
OpenOutputUBEfileForBinaryAs#文件号
#FileNumber,HFFFE”,和Unicode(大尾端)将头BOM标志。
把#FileNumber,保存Fbyte'sUnicodeBuffer“文件的内容
关闭#文件编号
AnsiToUBE =真
否则
AnsiToUBE = False:ExitFunction
ENDIF
endfunction下面
'Ansi平面文本文件转换为文本文件UTF-8
PrivateFunctionAnsiToUTF8(ByValInputansifileAsString,ByValOutputUTF8fileAsString)AsBoolean
DimFilebyte()AsByte',Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUTF8Buffer()AsByte,SAsString
OnErrorResumeNext
'打开ANSI Inputansifile平面文本文件
FileNumber = FreeFile
IfDir(Inputansifile)= ThenAnsiToUTF8 = False:ExitFunction
OpenInputansifileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
S =文件字节
SANSI =中StrConv(S,vbUnicode)那些转换成可见的字符串VB6的
retlen =调用WideCharToMultiByte(CP_UTF8,0,所述StrPtr(三思) - 1 vbNullString,0,vbNullString,0)“需要retlen转换之后的所需尺寸和空间?
IfretLen0Then
ReDimsUTF8Buffer(retLen-1) '=字符串$(retLen,vbNullChar)' 来设置缓冲区的大小retLen =调用WideCharToMultiByte(CP_UTF8,0,StrPtr(SANSI), - 1,sUTF8Buffer(0),retLen,vbNullString,0)'开始转换
否则AnsiToUTF8 = False:ExitFunction
ENDIF
'另存为文本文件UTF - 8 OutputUTF 8文件
IfretLen0Then
ReDimPreservesUTF8Buffer(retLen-1)
S = StrConv(sUTF 8缓冲区,vbUnicode)
FileNumber = FreeFile
IfDir(OutputUTF8文件)ThenKill(OutputUTF8文件)
OpenOutputUTF8fileForBinaryAs#文件号
#FileNumber,HBFBBEF'和文件头UTF-8添加了BOM EFBBBF
输入#FileNumber,4,S'并保存文件的内容。
关闭#文件编号
AnsiToUTF8 =真
否则
AnsiToUTF8 = False:ExitFunction
ENDIF
endfunction下面
将UTF-8文本文件转换为Unicode文本文件。(LittleEndian)
PrivateFunctionUTF8ToULE(ByValInputUTF8fileAsString,ByValOutputULEfileAsString)AsBoolean
DimFilebyte()AsByte',Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUTF8BufferAsString,SAsStringOnErrorResumeNext
'打开文本文件UTF-8 InputUTF 8文件
FileNumber = FreeFile
IfDir(InputUTF8file)= ThenUTF8ToULE = False:ExitFunction
OpenInputUTF8fileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= EFAndHex $(Filebyte(1))= BBAndHex $(Filebyte(2))= B
S =文件字节
否则
MsgBox(?InputUTF8文件是一个不是UTF-8的编码格式文件!

UTF8ToULE = False:ExitFunction
ENDIF
SANSI =中StrConv(S,vbUnicode)那些转换成可见的字符串VB6的
retLen = MultiByteToWideChar(CP_UTF8,0,sAnsi,-1,vbNullChar,0)'retLen转换后获取所需的空间大小
IfretLen0Then
sUTF8Buffer = String $(retLen * 2,vbNullChar)'设置缓冲区大小
retLen = MultiByteToWideChar(CP_UTF8,0,sAnsi,-1,sUTF8Buffer,retLen * 2)'开始转换
否则
UTF8ToULE = False:ExitFunction
ENDIF
'另存为Unicode文本文件(LittleEndian)OutputULEfile
IfretLen0Then
S =左$(sUTF 8缓冲区,retLen * 2)
FileNumber = FreeFile
IfDir(OutputULEfile)ThenKill(OutputULEfile)
OpenOutputULEfileForBinaryAs#文件号
如果插入#FileNumber并保存S'文件的内容,程序会自动添加Unicode文件(LittleEndian)品牌的BOM FFFE标题
关闭#文件编号
UTF8ToULE = True
否则
UTF8ToULE = False:ExitFunction
ENDIF
endfunction下面
将UTF-8文本文件转换为Unicode文本文件(BigEndian)
PrivateFunctionUTF8ToUBE(ByValInputUTF8fileAsString,ByValOutputUBEfileAsString)AsBoolean
DimFilebyte()AsByte,Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUTF8BufferAsString,SAsString
迪米很长
OnErrorResumeNext
'打开文本文件UTF-8 InputUTF 8文件
FileNumber = FreeFile
IfDir(InputUTF8file)= ThenUTF8ToUBE = False:ExitFunction
OpenInputUTF8fileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= EFAndHex $(Filebyte(1))= BBAndHex $(Filebyte(2))= B
S =文件字节
否则
MsgBox(?InputUTF8文件是一个不是UTF-8的编码格式文件!

UTF8ToUBE = False:ExitFunction
ENDIF
SANSI =中StrConv(S,vbUnicode)那些转换成可见的字符串VB6的
retLen =的MultiByteToWideChar(CP_UTF8,0,SANSI,-1,vbNullString,0)“获取retLen转换之后所需要的空间大小
IfretLen0Then
sUTF8Buffer = String $(retLen * 2,vbNullChar)'设置缓冲区大小
retLen = MultiByteToWideChar(CP_UTF8,0,sAnsi,-1,sUTF8Buffer,retLen * 2)'开始转换
否则
UTF8ToUBE = False:ExitFunction
ENDIF
'另存为文本文件UnicodeBigEndian OutputUBEfile
IfretLen0Then
ReDimFilebyte(LenB(sAnsi)-1),Fbyte(LenB(sAnsi)-1)
Filebyte = StrConv(左$(sUTF 8缓冲区,retLen * 2),vbFromUnicode)
Fori = 0ToUBound(文件字节)
IfiMod 2 = 0
Fbyte(i)= Filebyte(i + 1)
否则
Fbyte(i)= Filebyte(i-1)
ENDIF
下一个
FileNumber = FreeFile
IfDir(OutputUBEfile)ThenKill(OutputUBEfile)
OpenOutputUBEfileForBinaryAs#文件号
当插入#FileNumber并保存Fbyte'文件的内容时,程序会自动添加Unicode文件头(BigEndian)BOM标志FEFF
关闭#文件编号
UTF8ToUBE = True
否则
UTF8ToUBE = False:ExitFunction
ENDIF
endfunction下面
将UTF-8文本文件转换为Ansi平面文本文件
PrivateFunctionUTF8ToAnsi(ByValInputUTF8fileAsString,ByValOutputAnsifileAsString)AsBoolean
DimFilebyte()AsByte',Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUTF8BufferAsString,SAsString
“DimiAsLong
OnErrorResumeNext
'打开文本文件UTF-8 InputUTF 8文件
FileNumber = FreeFile
IfDir(InputUTF8file)= ThenUTF8ToAnsi = False:ExitFunction
OpenInputUTF8fileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)#Gig FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= EFAndHex $(Filebyte(1))= BBAndHex $(Filebyte(2))= B
S =文件字节否则
MsgBox(?InputUTF8文件是一个不是UTF-8的编码格式文件!

UTF8ToAnsi = False:ExitFunction
ENDIF
SANSI =中StrConv(S,vbUnicode)那些转换成可见的字符串VB6的
retLen =的MultiByteToWideChar(CP_UTF8,0,SANSI,-1,vbNullString,0)“获取retLen转换之后所需要的空间大小
IfretLen0Then
sUTF8Buffer = String $(retLen * 2,vbNullChar)'设置缓冲区大小
retLen = MultiByteToWideChar(CP_UTF8,0,sAnsi,-1,sUTF8Buffer,retLen * 2)'开始转换
否则
UTF8ToAnsi = False:ExitFunction
ENDIF
'另存为纯文本文件ANSI OutputAnsifile
IfretLen0Then
S =左$(sUTF 8缓冲区,retLen * 2)
S = StrConv(S,vbFromUnicode)
Mid $(S,1,1)=:S = trim(S)
FileNumber = FreeFile
IfDir(OutputAnsifile)ThenKill(OutputAnsifile)
OpenOutputAnsifileForBinaryAs#文件编号
插入#FileNumber并保存S'文件的内容
关闭#文件编号
UTF8ToAnsi = True
否则
UTF8ToAnsi = False:ExitFunction
ENDIF
endfunction下面
将Unicode文本文件(LittleEndian)转换为Ansi平面文本文件
PrivateFunctionULEToAnsi(ByValInputULEfileAsString,ByValOutputAnsifileAsString)AsBoolean
DimFilebyte()AsByte',Fbyte()AsByte
DimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUnicodeBuffer()AsByte,SAsString
“DimiAsLong
OnErrorResumeNext
'打开Unicode文本文件(LittleEndian)InputULEfile
FileNumber = FreeFile
IfDir(InputULEfile)= ThenULEToAnsi = False:ExitFunction
OpenInputULEfileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= FFAndHex $(Filebyte(1))= FEThen
S =文件字节
否则
MsgBox(InputULEfile是Unicode(LittleEndian)以外的编码格式文件!

ULEToAnsi = False:ExitFunction
ENDIF
sAnsi = StrConv(S,vbNarrow)被转换为可见字符串VB6。这里我们不得不说它可以最终确定,VB 6使用StrConv转换并将sAnsi直接保存到文件中。
以下是使用API??转换为Ansi代码。
sAnsi = S.
retLen =调用WideCharToMultiByte(CP_ACP,0,StrPtr(SANSI), - 1,vbNullString,0,vbNullString,0)来获得retLen转换所需的空间“量
IfretLen0Then
ReDimsUnicodeBuffer(retLen * 2-1)'String $(retLen * 2,vbNullChar)'设置缓冲区大小
retLen =调用WideCharToMultiByte(CP_ACP,0,StrPtr(SANSI), - 1,sUnicodeBuffer(0),retLen * 2,vbNullString,0)“到开始转换
否则
ULEToAnsi = False:ExitFunction
ENDIF
'另存为纯文本文件ANSI OutputAnsifile
IfretLen0Then
ReDimPreservesUnicodeBuffer(retLen-1)
S = StrConv(sUnicodeBuffer,vbUnicode)
Mid $(S,1,1)=:S = trim(S)
FileNumber = FreeFile
IfDir(OutputAnsifile)ThenKill(OutputAnsifile)
OpenOutputAnsifileForBinaryAs#文件编号
插入#FileNumber并保存S'文件的内容
关闭#文件编号
ULEToAnsi = True
否则
ULEToAnsi = False:ExitFunction
ENDIF
endfunction下面
文本文件'Unicode(Little Endian)'是Unicode大端文本文件。
'UnicodeBigEndian文本文件转换为Unicode文本文件(LittleEndian)。
'Hex $(Filebyte(0))= FFAndHex $(Filebyte(1))=仅更改为FE
'Hex $(Filebyte(0))= FEAndHex $(Filebyte(1))= FF。
PrivateFunctionULEToUBE(ByValInputULEfileAsString,ByValOutputUBEfileAsString)AsBoolean
DimFilebyte()AsByte,Fbyte()AsByte
'DimsAnsiAsString,retLenAsLong
'DimsUnicodeBuffer()AsByte,SAsString
DimiAsLong,FileNumberAsLong
OnErrorResumeNext
'打开Unicode文本文件(LittleEndian)InputULEfile
FileNumber = FreeFile
IfDir(InputULEfile)= ThenULEToUBE = False:ExitFunction
OpenInputULEfileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1),Fbyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= FFAndHex $(Filebyte(1))= FEThen
'Unicode(LittleEndian)编码格式文件
否则
MsgBox(InputULEfile是Unicode(LittleEndian)以外的编码格式文件!

ULEToUBE = False:ExitFunction
ENDIF
Fori = 0ToUBound(文件字节)
IfiMod 2 = 0
Fbyte(i)= Filebyte(i + 1)
否则
Fbyte(i)= Filebyte(i-1)
ENDIF
下一个
'另存为文本文件UnicodeBigEndian OutputUBEfile
FileNumber = FreeFile
IfDir(OutputUBEfile)ThenKill(OutputUBEfile)
OpenOutputUBEfileForBinaryAs#文件号
插入#FileNumber并保存Fbyte'文件的内容
关闭#文件编号
endfunction下面
将Unicode文本文件(LittleEndian)转换为UTF-8文本文件
PrivateFunctionULEToUTF8(ByValInputULEfileAsString,ByValOutputUTF8fileAsString)AsBoolean
DimFilebyte()AsByte',Fbyte()AsByteDimsAnsiAsString,retLenAsLong,FileNumberAsLong
DimsUTF8Buffer()AsByte,SAsString
OnErrorResumeNext
'打开Unicode文本文件(LittleEndian)InputULEfileFileNumber = FreeFile
IfDir(InputULEfile)= ThenULEToUTF8 = False:ExitFunction
OpenInputULEfileForBinaryAs#文件号
ReDimFilebyte(LOF(文件号)-1)
#获取FileNumber,Filebyte。
关闭#文件编号
IfHex $(Filebyte(0))= FFAndHex $(Filebyte(1))= FEThen
S =文件字节
否则
MsgBox(InputULEfile是Unicode(LittleEndian)以外的编码格式文件!

ULEToUTF 8 = False:ExitFunction
ENDIF
sAnsi = StrConv(S,vbNarrow)'转换为可见字符串VB 6
Mid $(sAnsi,1,1)=:sAnsi = trim(sAnsi)
retlen =调用WideCharToMultiByte(CP_UTF8,0,所述StrPtr(三思) - 1 vbNullString,0,vbNullString,0)“需要retlen转换之后的所需尺寸和空间?
IfretLen0Then
ReDimsUTF8Buffer(retLen-1)'= String $(retLen,vbNullChar)'设置缓冲区大小
retLen =调用WideCharToMultiByte(CP_UTF8,0,StrPtr(SANSI), - 1,sUTF8Buffer(0),retLen,vbNullString,0)“到开始转换
否则
ULEToUTF 8 = False:ExitFunction
ENDIF
'另存为文本文件UTF - 8 OutputUTF 8文件
IfretLen0Then
ReDimPreservesUTF8Buffer(retLen-1)
S = StrConv(sUTF 8缓冲区,vbUnicode)
FileNumber = FreeFile
IfDir(OutputUTF8文件)ThenKill(OutputUTF8文件)
OpenOutputUTF8fileForBinaryAs#文件号
#FileNumber,HBFBBEF'和文件头UTF-8添加了BOM EFBBBF
输入#FileNumber,4,S'并保存文件的内容。
关闭#文件编号
ULEToUTF 8 =真
否则
ULEToUTF 8 = False:ExitFunction
ENDIF
endfunction下面
PrivateSubCommand1_Click()
'首先创建一个Ansi d:\ AnsiCodeFile的纯文本文件。
TXT
'Ansi平面文本文件转换为Unicode文本文件(LittleEndian)
CallAnsiToULE(d:\ AnsiCodeFile)
Txt,d:\ AnsiToUnicodeLEFile。
TXT)
'Ansi平面文本文件转换为Unicode文本文件(BigEndian)
CallAnsiToUBE(d:\ AnsiCodeFile)
Txt,d:\ AnsiToUnicodeBEFile。
TXT)
'Ansi平面文本文件转换为文本文件UTF-8
CallAnsiToUTF8(d:\ AnsiCodeFile)
Txt,d:\ AnsiToUTF8File。
TXT)
将UTF-8文本文件转换为Unicode文本文件。(LittleEndian)
CallUTF8ToULE(d:\ AnsiToUTF8File)
Txt,d:\ UTF8ToUnicodeLEFile。
TXT)
'将UTF-8文本文件转换为UnicodeBigEndian文本文件
CallUTF8ToUBE(d:\ AnsiToUTF8File)。
Txt,d:\ UTF8ToUnicodeBEFile。
TXT)
将UTF-8文本文件转换为Ansi平面文本文件
CallUTF8ToAnsi(d:\ AnsiToUTF8File)。
Txt,d:\ UTF8ToAnsiFile。
TXT)
将Unicode文本文件(LittleEndian)转换为Ansi平面文本文件
CallULEToAnsi(d:\ AnsiToUnicodeLEFile。
Txt,d:\ UnicodeLEToAnsiFile。
TXT)
将Unicode文本文件(LittleEndian)转换为UnicodeBigEndian文本文件
CallULEToUBE(d:\ AnsiToUnicodeLEFile
Txt,d:\ UnicodeLEToUnicodeBEFile。
TXT)
将Unicode文本文件(LittleEndian)转换为UTF-8文本文件
调用ULEToUTF8(d:\ AnsiToUnicodeLEFile)。
Txt,d:\ UnicodeLEToUTF8File。
TXT)
EndSub
标签:VB编码AnsiUTF 8 Unicodebig作者:admin

上一篇:上一篇:奥兹冰人的诅咒是真的吗?           下一篇:下一篇:没有了