Announcement

Collapse
No announcement yet.

MySQL - Konvertierung von UTF8 zu ANSI mit VB 2005

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MySQL - Konvertierung von UTF8 zu ANSI mit VB 2005

    Hallo,

    ich habe ein akutes Problem bei der Abfrage von Daten aus einer Mysql-Datenbank, die UTF8 kodiert sind. Die Daten werden über das nachfolgende Webservice in einem Dataset zurückgeliefert :

    <WebMethod()> _
    Public Function GetMySQLData() As DataSet
    Dim connMySQL As MySqlConnection
    Dim da As MySqlDataAdapter
    Dim ds As New DataSet

    connMySQL = New MySqlConnection("Server=xxx;Database=xxx;Uid=xxx;P wd=xxx")
    Try
    connMySQL.Open()
    da = New MySqlDataAdapter("select * from xxx", connMySQL)
    da.Fill(ds, "mysqldata")
    conn.Close()
    Catch ex As Exception
    return nothing
    End Try
    Return ds
    End Function

    Im aufrufenden Programm versuche ich nun, mit folgendem Code, einen UTF8-String in einen ANSI-String umzuwandeln :

    dim dv as dataview
    dim drv as datarowview
    dim b() as byte
    dim b1() as byte
    dim s as string
    dim s1 as string

    dv = ds.tables("mysqldata").defaultview
    for i = 0 to dv.count - 1
    drv = dv.item(i)
    s = dv.item("textfeld")
    b = System.Text.Encoding.UTF8.GetBytes(s)
    b1 = System.Text.Encoding.Convert(System.Text.Encoding. UTF8, System.Text.Encoding.Default, b)
    s1 = System.Text.Encoding.Default.GetString(b1)
    next

    Ich bekomme allerdings nach wie vor die "verdrehten" Umlaute zurückgeliefert. Ich habe das Encoding bei einem normalen String mit folgendem kleinen Programm probiert :

    Dim s As String = "ÄÖÜäöüß"
    Dim s1 As String

    Dim utf As New System.Text.UTF8Encoding
    Dim def As New System.Text.UnicodeEncoding
    Dim b() As Byte
    Dim b1() As Byte


    b = utf.GetBytes(s)
    b1 = System.Text.Encoding.Convert(System.Text.Encoding. Default, System.Text.Encoding.UTF8, b)
    s1 = utf.GetString(b1)

    b = System.Text.Encoding.Default.GetBytes(s1)
    b1 = System.Text.Encoding.Convert(System.Text.Encoding. UTF8, System.Text.Encoding.Default, b)
    s1 = System.Text.Encoding.Default.GetString(b1)

    Hier funktioniert das Hin- und Herkonvertieren problemlos. Was mache ich falsch bei der Mysql-Konvertierung ?

    Danke für Eure Hilfe !
    Peter
Working...
X