| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 
 | Public Function sUTF8ToUni(bySrc() As Byte) As String
' Converts a UTF-8 byte array to a Unicode string
Dim lBytes As Long, lNC As Long, lRet As Long
 
   lBytes = UBound(bySrc) - LBound(bySrc) + 1
   lNC = lBytes
   sUTF8ToUni = String$(lNC, Chr(0))
   lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bySrc(LBound(bySrc))), lBytes, StrPtr(sUTF8ToUni), lNC)
   sUTF8ToUni = Left$(sUTF8ToUni, lRet)
End Function
 
Private Function ConvertUTF8File(sUTF8File As String) As String
Dim iFile As Integer, bData() As Byte, sData As String, lSize As Long
 
   ' Get the incoming data size
   lSize = FileLen(sUTF8File)
   If lSize > 0 Then
       ReDim bData(0 To lSize - 1)
 
       ' Read the existing UTF-8 file
       iFile = FreeFile()
       Open sUTF8File For Binary As #iFile
       Get #iFile, , bData
       Close #iFile
 
       ' Convert all the data to Unicode (all VB Strings are Unicode)
       sData = sUTF8ToUni(bData)
   Else
       sData = ""
   End If
   ConvertUTF8File = sData
End Function | 
Partager