字符处理文件操作源码分享

vb6处理utf8编解码:基于ADODB.Stream组件实现(包含字符串和文件)

vb6处理utf8编解码有至少4种方法:

  • 基于API实现(createfile setfilepointer (ex))
  • 基于ADODB.Stream组件实现
  • 基于XML组件实现
  • 纯VB6代码实现

先搞个处理字符串的utf8编码和解码,本实例使用 基于ADODB.Stream组件实现

字符串处理

'* ************************************** *  

'* 模块名称:modCharset.bas  

'* 模块功能:GB2312与UTF8相互转换函数  

'* 作者:lyserver  

'* ************************************** *  
 
Option Explicit  
 '- ------------------------------------------- -  

'  函数说明:GB2312转换为UTF8  

'- ------------------------------------------- -  

Public Function GB2312ToUTF8(strIn As String, Optional ByVal ReturnValueType As VbVarType = vbString) As Variant  
    Dim adoStream As Object  
    Set adoStream = CreateObject("ADODB.Stream")  
    adoStream.Charset = "utf-8"  
    adoStream.Type = 2 'adTypeText  
    adoStream.Open  
    adoStream.WriteText strIn  
    adoStream.Position = 0  
    adoStream.Type = 1 'adTypeBinary  
    GB2312ToUTF8 = adoStream.Read()  
    adoStream.Close  
    If ReturnValueType = vbString Then GB2312ToUTF8 = Mid(GB2312ToUTF8, 1)  
End Function 

'- ------------------------------------------- -  

'  函数说明:UTF8转换为GB2312  

'- ------------------------------------------- -  

Public Function UTF8ToGB2312(ByVal varIn As Variant) As String  
    Dim bytesData() As Byte  
    Dim adoStream As Object
    bytesData = varIn
    Set adoStream = CreateObject("ADODB.Stream")  
    adoStream.Charset = "utf-8"  
    adoStream.Type = 1 'adTypeBinary  
    adoStream.Open  
    adoStream.Write bytesData  
    adoStream.Position = 0  
    adoStream.Type = 2 'adTypeText  
    UTF8ToGB2312 = adoStream.ReadText()  
    adoStream.Close 
End Function  

文件处理

Rem 工程要引用 Microsoft ActiveX Data Objects 2.8,下面的通用方法建议放在模块中
Public Sub SaveAsUTF8(ByVal Text As String, ByVal FileName As String)
  Dim oStream As ADODB.Stream

  Set oStream = New ADODB.Stream
  oStream.Open
  oStream.Charset = "UTF-8"
  oStream.Type = adTypeText
  oStream.WriteText Text
  oStream.SaveToFile FileName, adSaveCreateOverWrite
  oStream.Close
End Sub

Public Function LoadAsUTF8(ByVal FileName As String) As String
  Dim oStream As ADODB.Stream

  Set oStream = New ADODB.Stream
  oStream.Open
  oStream.Charset = "UTF-8"
  oStream.LoadFromFile FileName

  LoadAsUTF8 = oStream.ReadText()

  oStream.Close
End Function

Views: 96

Hi, I’m 邓伟

本来无一物,何处惹尘埃

发表回复