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

Excel连接PostgreSQL时如何获取UTF-8编码字符串?

解决Excel连接PostgreSQL时获取UTF-8字符串的问题

嗨,我来帮你搞定这个UTF-8编码的问题!结合你已经完成的操作,下面是几个关键的解决步骤:

1. 检查并修改ODBC DSN的编码配置

打开ODBC数据源管理器(注意和你的Excel位数匹配:32位Excel找C:\Windows\SysWOW64\odbcad32.exe,64位找C:\Windows\System32\odbcad32.exe),找到你创建的PostgreSQL系统DSN,点击「配置」:

  • 在配置界面里找到「Encoding」(或「字符集」)选项,直接选择UTF8或者UNICODE,保存设置。

2. 在连接字符串中强制指定客户端编码

如果DSN的配置没生效,你可以直接在连接字符串里添加编码参数,修改你的VBA代码如下:

Public Function setDBConnectionPgsql() As Object
    Set setDBConnectionPgsql = CreateObject("ADODB.Connection")
    ' 新增ClientEncoding=UTF8参数,强制驱动用UTF-8传输数据
    setDBConnectionPgsql.Open "DSN=PostgreSQL;Server=192.168.1.10;Port=5434;UserId=postgres;Password=123456;Database=test;ClientEncoding=UTF8;"
End Function

3. 确保Excel单元格格式支持UTF-8

读取数据到Excel时,尽量把目标单元格的格式设置为文本格式,避免Excel自动转换编码导致乱码。如果是批量写入,可以先把整列格式设为文本再写入数据。

4. 验证驱动位数匹配

这个是很多人忽略的坑:如果你的Excel是32位版本,必须安装32位的PostgreSQL ODBC驱动;如果是64位Excel,就装64位驱动。位数不匹配不仅可能导致连接失败,也会引发编码异常。

如果按照上面的步骤操作后还有乱码,可以在读取字段值时用StrConv函数做一次编码转换,比如:

' 假设rs是你的ADODB.Recordset对象
Dim utf8Str As String
utf8Str = StrConv(rs.Fields("your_column_name").Value, vbUnicode)
Range("A1").Value = utf8Str

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:06:42