将Unicode转换为Visual Basic 6中的UTF-8

问题描述 投票:4回答:1

我尝试将Unicode数据从Visual Basic 6 Access文件导入到MySQL表中。数据包含Polish个字符。问题在于,我没有在波兰语表中显示垃圾字,而是波兰语字符。

导入过程如下:

Set db = New ADODB.Connection
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & T_BAZA & ";Persist Security Info=False"
Set rst = New ADODB.Recordset

Set db1 = New ADODB.Connection
db1.Open "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=192.168.101.1;" & " DATABASE=jadlospis1;" & "UID=XXX;PWD=XXX;OPTION=3;"
Set rst1 = New ADODB.Recordset


Me.MousePointer = vbHourglass

SQL1 = "DELETE FROM Jadlospis;"
db1.Execute SQL1, , adCmdText

SQL = "SELECT NazwaJadlospisu, Dzien, Posilek, PotrawaProdukt, Waga, Opis, Komentarz FROM JadlospisSzczegoly ORDER BY NazwaJadlospisu, Dzien, Posilek, PotrawaProdukt"
rst.Open SQL, db, adOpenStatic, adLockOptimistic, adCmdText

Do While Not rst.EOF
            t_wiersz = t_wiersz + 1

            t_NazwaJadlospisu = (LCase(rst("NazwaJadlospisu")))
            t_Dzien = (LCase(rst("Dzien")))
            t_Posilek = (LCase(rst("Posilek")))
            t_PotrawaProdukt = (LCase(rst("PotrawaProdukt")))
            T_Waga = (LCase(rst("Waga")))
            t_opis = (LCase(rst("Opis")))
            t_Komentarz = (LCase(rst("Komentarz")))

            SQL1 = "INSERT INTO Jadlospis ( NazwaJadlospisu, Dzien, Posilek, PotrawaProdukt, Komentarz, Waga, Opis ) VALUES ( '" & t_NazwaJadlospisu & "', " & t_Dzien & ", " & t_Posilek & ", '" & t_PotrawaProdukt & "', '" & t_Komentarz & "', " & T_Waga & ", '" & t_opis & "' );"
            db1.Execute SQL1, , adCmdText
            rst.MoveNext
Loop
db1.Close
rst.Close
db.Close

MySQL表已使用DEFAULT CHARACTER SET = utf8选项创建。问题是,在MySQL表中出现了垃圾,而不是波兰语字符,即该表显示如下:

+------------------------------+
| NazwaJadlospisu              |
+------------------------------+
| dieta 1500 kcal              |
| dieta wegańska 1500 kcal    |
+------------------------------+
2 rows in set (0.00 sec)

它应该显示为:

+------------------------------+
| NazwaJadlospisu              |
+------------------------------+
| dieta 1500 kcal              |
| dieta wegańska 1500 kcal    |
+------------------------------+
2 rows in set (0.00 sec)

我尝试了Internet上的一些功能,但没有一个起作用。

一般问题是:如何在Visual Basic 6中将Unicode转换为UTF-8字符集?

由于我可以将数据导出为Excel电子表格或其他格式,所以另一个问题是:如何从Excel电子表格或其他(例如.txt)格式将数据加载到MySQL表中?

mysql excel vb6
1个回答
5
投票

在打开与MySQL数据库的连接时定义字符集,以便所有内容都经过utf8编码。

添加到您的连接字符串:

charset=UTF8;

类似于Specifying character set using MySQL ODBC 3.51 Driver中描述的内容>

当您得到解决时,您将面临Windows以Unicode包含所有内容的问题,而这当然不是utf8。

但是堆栈溢出问题How can I decode UTF8 in Visual Basic 6?

提供了答案。

阅读全部答案。最后,还有一个编码功能,您需要同时使用两者。

© www.soinside.com 2019 - 2024. All rights reserved.