You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA上传中文至SQL Server显示乱码(????)的解决问询

解决Excel VBA上传中文到SQL Server显示为????的问题

这个问题我之前帮不少人解决过,核心就是字符编码不匹配导致的乱码,咱们一步步来搞定:

1. 确认SQL Server字段类型

首先要保证你存储中文的数据库字段用的是Unicode类型:

  • 把字段类型从 varchar/char 改成 nvarchar/nchar(如果还没改的话)。因为varchar是ANSI编码,只能支持有限的字符集,中文存进去就会变成问号。

2. 修改VBA参数类型

你现在用的adVarChar是ADO的ANSI字符参数类型,和SQL Server的nvarchar不兼容,必须换成Unicode对应的参数类型adVarWChar:

原来的代码:

Parameters.Append .CreateParameter(, adVarChar, adParamInput, 255, CStr(ProjectList(i, 7)))

修改后:

Parameters.Append .CreateParameter(, adVarWChar, adParamInput, 255, ProjectList(i, 7))

注意:这里可以去掉CStr(),因为VBA里的数组元素如果是文本,本身就是Unicode字符串,直接传递更稳妥。

3. 确保连接字符串开启Unicode支持

在你的ADO连接字符串里加上Unicode=True,强制连接使用Unicode编码传输数据,避免中途编码转换丢失信息:

Dim conn As New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB;Data Source=你的服务器地址;Initial Catalog=你的数据库名;User ID=账号;Password=密码;Unicode=True;"
conn.Open

做完这三步,中文应该就能正常上传到SQL Server了,不会再显示成问号啦。

内容的提问来源于stack exchange,提问作者Sphinx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:15:40