得到??从excel工作表中提取汉字并通过vba导出到mysql时

得到??从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 "

让我在开始这个问题之前说,我知道这个问题在许多帖子中都从不同的角度进行了讨论。然而,我花了好几个小时在这上面,仍然无法让它工作,所以请求帮助

我在Excel表格的单元格中有一些汉字。我使用VBA将这些单元格的内容导出到mysql表中。通过mysql命令行,我能够成功地将中文字符插入表中(我使用的是utf8mb4字符集)

我还在VBA连接字符串中设置了charset=utf8mb4

但是,我无法让VBA在查询字符串中包含中文字符,如下所示:

    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。