Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4461
  • Last Modified:

Convert string to UTF8 string

I want a visual basic 6.0 procedure that will convert a string to a string containing UTF8 encoded text.
0
JiriNovotny
Asked:
JiriNovotny
  • 4
  • 2
2 Solutions
 
nasserdCommented:
Try this:
http://www.nonhostile.com/howto-convert-byte-array-utf8-string-vb6.asp

Remember that UTF-8 is treated as a Byte array; this should apply throughout your application and database layers.
0
 
JiriNovotnyAuthor Commented:
Hi nasserd, thanks for your comment. The solution you provided is for VB.NET, I need VB6 solution.
0
 
nasserdCommented:
Hi, the solution I directed you to is actually VB6.  There is even a Zip file you can download which has a project in VB6.

UTF-8 conversion in .NET is *very* different!
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
danaseamanCommented:
Vb6 strings are stored as UTF-16
Here is Function to convert Vb6 string to UTF-8 string.:


Option Explicit
 
Private Const adTypeBinary    As Long = 1
Private Const adTypeText      As Long = 2
Private Const adModeReadWrite As Long = 3
 
 
'Purpose: UTF16 to UTF8 using ADO
Public Function ADO_EncodeUTF8(ByVal strUTF16 As String) As String
 
    Dim objStream As Object
    Dim data() As Byte
    
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Charset = "utf-8"
    objStream.Mode = adModeReadWrite
    objStream.Type = adTypeText
    objStream.Open
    objStream.WriteText strUTF16
    objStream.Flush
    objStream.Position = 0
    objStream.Type = adTypeBinary
    objStream.Read 3 ' skip BOM
    data = objStream.Read()
    objStream.Close
    ADO_EncodeUTF8 = StrConv(data, vbUnicode, 1033)
 
End Function

Open in new window

0
 
nasserdCommented:
Persuant to danaseaman's StrConv() recommendation, here are two relevant posts:

Circa 2000: http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_10662022.html?eeSearch=true

Background info via Microsoft Support KBs: http://support.microsoft.com/kb/q179845/
0
 
danaseamanCommented:
Second link deals with obsolete 16-bit Vb4 vs 32-bit Vb5/6 and he is using Vb6 so this is not an issue.  

First link deals with UTF8 StrConv issues when running on a Japanese OS. If you use StrConv without specifying a LocalID on a Japanese system (which is MBCS) your UTF-8 conversion can be incorrrect since StrConv uses the current language. This is why above code uses 1033 to force StrConv to use U.S. English which does not have MBCS issues.    

0
 
nasserdCommented:
Here's a minor discussion about UTF conversion in VB6:
http://www.xtremevbtalk.com/archive/index.php/t-281422.html

Heere's a tutorial in using Unicode (UTF) in VB6:
http://www.cyberactivex.com/unicodetutorialvb.htm
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now