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
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