Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在Visual Basic 6中将Unicode转换为UTF-8_Mysql_Excel_Vb6 - Fatal编程技术网

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

Mysql 在Visual Basic 6中将Unicode转换为UTF-8,mysql,excel,vb6,Mysql,Excel,Vb6,我尝试将Unicode数据从Visual Basic 6文件导入MySQL表。数据包含字符。问题是我在MySQL表中得到的不是波兰语字符而是垃圾 导入过程如下所示: 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

我尝试将Unicode数据从Visual Basic 6文件导入MySQL表。数据包含字符。问题是我在MySQL表中得到的不是波兰语字符而是垃圾

导入过程如下所示:

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
+------------------------------+
| NazwaJadlospisu              |
+------------------------------+
| dieta 1500 kcal              |
| dieta wegańska 1500 kcal    |
+------------------------------+
2 rows in set (0.00 sec)
MySQL表是使用默认字符集=utf8选项创建的。问题是,我在MySQL表中得到的不是波兰语字符,而是垃圾,即该表如下所示:

+------------------------------+
| NazwaJadlospisu              |
+------------------------------+
| dieta 1500 kcal              |
| dieta wegańska 1500 kcal    |
+------------------------------+
2 rows in set (0.00 sec)
它应该显示如下:

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
+------------------------------+
| NazwaJadlospisu              |
+------------------------------+
| dieta 1500 kcal              |
| dieta wegańska 1500 kcal    |
+------------------------------+
2 rows in set (0.00 sec)
我尝试了一些在互联网上可用的功能,但没有一个有效

一般问题是:如何在Visual Basic 6中转换为字符集


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

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

添加到您的连接字符串:

charset=UTF8;
如中所述

如果解决了这个问题,您将面临这样一个问题:Windows的所有内容都是Unicode的,当然不是utf8

但堆栈溢出问题提供了一个答案


阅读全部答案。最后还有一个编码函数,两者都需要。

我已经用“charset=UTF8;”字符串更新了连接字符串,并添加了UTF8ENCODE函数,如前所述。它很好用。谢谢你的解决方案,不客气。Vb6很旧,已经有10多年没有编程了。您应该考虑切换到vb网络。