得到?从excel表中获取中文字符并通过vba导出到mysql时

时间:2016-01-31 23:12:34

标签: mysql excel vba excel-vba character-encoding

让我先说一下这个问题,我知道这个问题在很多帖子中都是从不同的角度来解决的。但是,我花了几个小时和几个小时才完成这项工作,仍然无法让它工作,所以请求帮助。

我在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。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

多个问号的常见原因:

  • 你有utf8编码的数据(好)
  • SET NAMES latin1生效(默认,但错误)
  • 该列已声明CHARACTER SET latin1(默认,但错误)

如果这些提示不够,那么请使用

之类的内容向我们展示表格中的内容
SELECT col, HEX(col) FROM tbl...

中文不能转换为ascii"。

<强>附加物

尝试设置DNS的“连接选项”&#39; - &gt;&#39;初始声明&#39;设置名称utf8mb4&#39;。 - MySQL ODBC 3.51 Driver UTF-8 encoding