Chinese characters - UTF8 CSV files

M

maralikatti

Hi All,

I'm facing problem while showing the Chinese characters in CSV file.
I'm using Open for Append Access Write As method to create the CSV file
programmatically. If I set the CSV file character set to UTF-8 then I
can display the Chinese characters. But I'm not able to set the CSV
character set to UTF-8 programmatically.

I'm using VB6.0 for this.

If anybody knows this please let me know. Thanks a lot in advance.

With love,
Manju
 
M

Michel Pierron

Hi Manju,
Write your csv file in first and try to convert it then into sending the
full path name of your file like argument to the procedure below:

Sub Encode(ByVal sPath$, Optional SetChar$ = "UTF-8")
With CreateObject("ADODB.Stream")
..Open
..LoadFromFile sPath ' Loads a File
..Charset SetChar ' sets stream encoding (UTF-8)
..SaveToFile sPath, 2 ' adSaveCreateOverWrite
..Close
End With
End Sub

Regards,
MP
 
M

maralikatti

Hi Michel,

Thanks a lot for the response. I'm getting "450 Wrong number of
arguments or invalid property assignment" error when I use the below
code.

Since I'm very new to VB, please bare with me. Thanks a lot in advance.

Regards,
Manjunath A.
 
M

Michel Pierron

Re Manju,
Excuse me, there is an error of text in the procedure, one needs an equal
sign between .CharSet and SetChar:
..CharSet = SetChar ' sets stream encoding (UTF-8)

Regards,
MP

<[email protected]> a écrit dans le message de (e-mail address removed)...
Hi Michel,

Thanks a lot for the response. I'm getting "450 Wrong number of
arguments or invalid property assignment" error when I use the below
code.

Since I'm very new to VB, please bare with me. Thanks a lot in advance.

Regards,
Manjunath A.
 
M

maralikatti

Hi Michel,

That worked !! Thanks a lot.

But still I'm seeing "??" marks instead of chinese characters in CSV
file. Do you have any idea about this?

Thanks in advance.

Regards,
Manju
 
M

Michel Pierron

Re Manju,
I do not have an idea for the moment about this, but to check, you could try
to generate your file through Notepad and to record it with format UTF-8.
To record a file with format UTF-8 using the Notepad, click on File To Save
as. Then, develop the list of options of the Codage zone and select UTF-8.

MP

<[email protected]> a écrit dans le message de (e-mail address removed)...
Hi Michel,

That worked !! Thanks a lot.

But still I'm seeing "??" marks instead of chinese characters in CSV
file. Do you have any idea about this?

Thanks in advance.

Regards,
Manju
 
M

Michel Pierron

Re Manju,
I think that you could do something like that:
1- Create an empty file
2- Convert it with format UTF-8.
3- Append your data

Sub Create_UTF8_File()
Const File$ = "C:\FileTest.csv"
Dim Fso, MyFile
Set Fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = Fso.CreateTextFile(File, True)
MyFile.Close
With CreateObject("ADODB.Stream")
..Open
..LoadFromFile File
..Position = 0
..CharSet = "UTF-8"
..SaveToFile File, 2
..Close
End With
'Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set MyFile = Fso_OpenTextFile(File, 8, True, True)
' Just for the example:
MyFile.WriteLine ChrW(31532) & ChrW(&H4F60) & ChrW(&H597D) _
& ChrW(59) & ChrW(&H6771) & ChrW(&H4EAC)
MyFile.WriteLine ChrW(&H4EAC) & ChrW(&H90FD) & ChrW(59) _
& ChrW(&H65B0) & ChrW(&H6F5F) & ChrW(&H21)
MyFile.Close
Set MyFile = Nothing: Set Fso = Nothing
End Sub

Regards,
MP

<[email protected]> a écrit dans le message de (e-mail address removed)...
Hi Michel,

That worked !! Thanks a lot.

But still I'm seeing "??" marks instead of chinese characters in CSV
file. Do you have any idea about this?

Thanks in advance.

Regards,
Manju
 
M

Michel Pierron

Re Manju,
Or more simply by creating one unicode file with fso

Sub Create_UTF8_File()
Const File$ = "C:\FileTest.csv"
Dim Fso, MyFile
Set Fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = Fso.CreateTextFile(File, True, True)
' Just for the example:
MyFile.WriteLine ChrW(31532) & ChrW(&H4F60) & ChrW(&H597D) _
& ChrW(59) & ChrW(&H6771) & ChrW(&H4EAC)
MyFile.WriteLine ChrW(&H4EAC) & ChrW(&H90FD) & ChrW(59) _
& ChrW(&H65B0) & ChrW(&H6F5F) & ChrW(&H21)
MyFile.Close
Set MyFile = Nothing: Set Fso = Nothing
End Sub

Regards,
MP

<[email protected]> a écrit dans le message de (e-mail address removed)...
Hi Michel,

That worked !! Thanks a lot.

But still I'm seeing "??" marks instead of chinese characters in CSV
file. Do you have any idea about this?

Thanks in advance.

Regards,
Manju
 
H

HKSHK

Hello Manju,

the problem is that VB6 does not support UTF-8.
If you want to append then maybe you can use this method:

1. Open the file as binary
2. Get the characters value (AscW) and write it into a long variable.
3. Get the upper and lower byte values and store them in 2 byte variables.
4. Write those byte variables into your file.
5. For Carriage Return and line feed you have to write the 10 and 13
manually.

Best Regards,

HKSHK
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top