得到?? 从excel表单中取汉字时,通过vba导出到mysql

让我先说这个问题,说我知道这个问题是从多个angular度从多个angular度处理的。 但是,我已经花了几个小时,但仍然无法工作,所以寻求帮助。

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

我还在VBA连接string中设置了charset = utf8mb4。

但是,我不能让VBA在查询string中包含中文字符,如下所示:

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 latin1是有效的(默认,但错误)
  • 该列被声明为CHARACTER SET latin1 (默认,但错误)

如果这些提示还不够,那么使用类似的方法告诉我们桌子上有什么

 SELECT col, HEX(col) FROM tbl... 

中文不能“转换成ascii”。

附加物

尝试将DNS的“连接选项” – >“初始语句”设置为“SET NAMES utf8mb4”。 – MySQL ODBC 3.51驱动程序UTF-8编码