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