首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >明白了吗?当从excel工作表中提取汉字并通过vba导出到mysql时

明白了吗?当从excel工作表中提取汉字并通过vba导出到mysql时
EN

Stack Overflow用户
提问于 2016-01-31 23:12:34
回答 1查看 1.3K关注 0票数 1

让我在这个问题的序言中说,我知道这个问题在许多帖子中都是从不同的角度来处理的。然而,我已经花了好几个小时在这个问题上,但仍然不能让它工作,所以我寻求帮助。

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

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

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

代码语言:javascript
复制
    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。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 23:51:03

造成多个问号的常见原因:

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

如果这些提示还不够,那么就向我们展示表中的内容,使用如下

代码语言:javascript
复制
SELECT col, HEX(col) FROM tbl...

中文不能被“转换为ascii”。

增编

尝试将DNS的“连接选项”--“初始语句”设置为“设置名称utf8mb4”。-- MySQL ODBC 3.51 Driver UTF-8 encoding

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35120706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档