Hi, I am
Arren.
Maybe you need output file as UTF-8 encoding, but VB6 is nativly support ansi encoding, it's depend on your machine. I write this module, it can help you write utf-8 encoding files from vb6.
Maybe you need output file as UTF-8 encoding, but VB6 is nativly support ansi encoding, it's depend on your machine. I write this module, it can help you write utf-8 encoding files from vb6.
Option
Base
0
Public Function OpenFile(path As String ) As Integer
Kill path
Dim fid As Integer
fid = FreeFile ()
Open path For Binary As fid
OpenFile = fid
End Function
Public Sub CloseFile(fid As Integer )
Close fid
End Sub
Public Function WriteFile(fid As Integer , s As String ) As Integer
Dim bs() As Byte , buf( 0 To 6 ) As Byte
Dim c As Integer , l As Integer , i As Integer , ch As Long
bs = s
c = UBound (bs)
For i = 0 To c Step 2
ch = bs(i + 1 ) * 2 ^ 8 Or bs(i)
l = UnicodeToUTF8(ch, buf)
Call WriteBytes(buf, l, fid)
Next i
End Function
Private Sub WriteBytes(buf() As Byte , cnt As Integer , fid As Integer )
Dim i As Integer
Dim b( 0 To 0 ) As Byte
For i = 0 To cnt
b( 0 ) = buf(i)
Put fid, , b
Next i
End Sub
Private Function UnicodeToUTF8(ch As Long , buf() As Byte ) As Integer
Dim i As Integer : i = 0
If (ch < & H80) Then
buf(i) = ch
ElseIf (ch < & H800) Then
buf(i) = & HC0 Or ((ch And & H7C00) / 2 ^ 6 ): i = i + 1
buf(i) = & H80 Or (ch And & H3F)
ElseIf (ch < & H10000) Then
buf(i) = & HE0 Or ((ch And & HF000) / 2 ^ 12 ): i = i + 1
buf(i) = & H80 Or ((ch And & HFC0) / 2 ^ 6 ): i = i + 1
buf(i) = & H80 Or (ch And & H3F)
End If
UnicodeToUTF8 = i
End Function
Public Function OpenFile(path As String ) As Integer
Kill path
Dim fid As Integer
fid = FreeFile ()
Open path For Binary As fid
OpenFile = fid
End Function
Public Sub CloseFile(fid As Integer )
Close fid
End Sub
Public Function WriteFile(fid As Integer , s As String ) As Integer
Dim bs() As Byte , buf( 0 To 6 ) As Byte
Dim c As Integer , l As Integer , i As Integer , ch As Long
bs = s
c = UBound (bs)
For i = 0 To c Step 2
ch = bs(i + 1 ) * 2 ^ 8 Or bs(i)
l = UnicodeToUTF8(ch, buf)
Call WriteBytes(buf, l, fid)
Next i
End Function
Private Sub WriteBytes(buf() As Byte , cnt As Integer , fid As Integer )
Dim i As Integer
Dim b( 0 To 0 ) As Byte
For i = 0 To cnt
b( 0 ) = buf(i)
Put fid, , b
Next i
End Sub
Private Function UnicodeToUTF8(ch As Long , buf() As Byte ) As Integer
Dim i As Integer : i = 0
If (ch < & H80) Then
buf(i) = ch
ElseIf (ch < & H800) Then
buf(i) = & HC0 Or ((ch And & H7C00) / 2 ^ 6 ): i = i + 1
buf(i) = & H80 Or (ch And & H3F)
ElseIf (ch < & H10000) Then
buf(i) = & HE0 Or ((ch And & HF000) / 2 ^ 12 ): i = i + 1
buf(i) = & H80 Or ((ch And & HFC0) / 2 ^ 6 ): i = i + 1
buf(i) = & H80 Or (ch And & H3F)
End If
UnicodeToUTF8 = i
End Function