让我先说一下这个问题,我知道这个问题在很多帖子中都是从不同的角度来解决的。但是,我花了几个小时和几个小时才完成这项工作,仍然无法让它工作,所以请求帮助。
我在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。
我做错了什么?
答案 0 :(得分:1)
多个问号的常见原因:
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