得到??从excel工作表中提取汉字并通过vba导出到mysql时
让我在开始这个问题之前说,我知道这个问题在许多帖子中都从不同的角度进行了讨论。然而,我花了好几个小时在这上面,仍然无法让它工作,所以请求帮助 我在Excel表格的单元格中有一些汉字。我使用VBA将这些单元格的内容导出到mysql表中。通过mysql命令行,我能够成功地将中文字符插入表中(我使用的是utf8mb4字符集) 我还在VBA连接字符串中设置了charset=utf8mb4 但是,我无法让VBA在查询字符串中包含中文字符,如下所示:得到??从excel工作表中提取汉字并通过vba导出到mysql时,mysql,vba,excel,character-encoding,Mysql,Vba,Excel,Character Encoding,让我在开始这个问题之前说,我知道这个问题在许多帖子中都从不同的角度进行了讨论。然而,我花了好几个小时在这上面,仍然无法让它工作,所以请求帮助 我在Excel表格的单元格中有一些汉字。我使用VBA将这些单元格的内容导出到mysql表中。通过mysql命令行,我能够成功地将中文字符插入表中(我使用的是utf8mb4字符集) 我还在VBA连接字符串中设置了charset=utf8mb4 但是,我无法让VBA在查询字符串中包含中文字符,如下所示: SQLStr = "INSERT INTO "
SQLStr = "INSERT INTO " & VBA.Trim(databaseName) & ".translationTable" & " VALUES ('" & _
timestamp & "','" & _
Replace(Worksheets("translationTable").Range("IORange").Cells(Counter, 2), Chr(10), "") & "','" & _
Replace(Worksheets("translationTable").Range("IORange").Cells(Counter, 3), Chr(10), "") & "','" & _
Replace(Worksheets("translationTable").Range("IORange").Cells(Counter, 4), Chr(10), "") & "','" & _
Replace(Worksheets("translationTable").Range("IORange").Cells(Counter, 4), Chr(10), "") & "')"
rs.Open SQLStr, oConn
我知道VBA编辑器在任何情况下都不会显示汉字。然而,从VBA插入的汉字显示为??在数据库中也是如此
似乎我正在做的事情是在执行INSERT语句之前将汉字转换为ASCII
我做错了什么?多个问号的常见原因:
- 您有utf8编码的数据(良好)
已生效(默认,但错误)SET NAMES拉丁语1
- 列被声明为
(默认值,但错误)字符集latin1
SELECT col, HEX(col) FROM tbl...
中文不能“转换为ascii”
附录
尝试将DNS的“连接选项”->“初始语句”设置为“设置名称utf8mb4”。-- ODBC/Mysql驱动程序不允许使用集合名称(我使用的是5.5.25)。相反,我在连接字符串中设置了字符集(如上所述),但我不知道这是否足够。。问题不在数据库方面,因为当我通过MySQL workbench插入汉字时,它可以工作。当通过Workbench插入时,汉字的十六进制是E4BAA4E4BB98,而从VBA插入时是3F3F。连接器/ODBC的版本号是什么?使用连接器/ODBC 3.51驱动程序的ADO应用程序(包括ASP)不支持Unicode。请考虑测试包含ASP.Unicode支持的MySQL连接器/ODBC 5.1。