gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:38:26 25 4
gpt4 key购买 nike

让我先说这个问题,我知道这个主题在很多帖子中都从不同的角度来解决。但是,我已经为此花费了数小时,但仍然无法正常工作,因此寻求帮助。

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

我做错了什么?

最佳答案

出现多个问号的常见原因:

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

如果这些提示还不够,请使用类似的方式向我们展示表格中的内容

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

中文不能“转ascii”。

附录

尝试将 DNS 的“连接选项”->“初始声明”设置为“SET NAMES utf8mb4”。 -- MySQL ODBC 3.51 Driver UTF-8 encoding

关于mysql - 得到 ??从 excel 表中获取汉字并通过 vba 导出到 mysql 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com