You need to enable JavaScript to run this app. Windows10下使用psql.exe执行SQL文件后出现特殊字符乱码如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下使用psql.exe执行SQL文件后出现特殊字符乱码如何解决?

psql执行含特殊字符SQL脚本乱码解决方案

该乱码为典型的编码不匹配问题:ö的UTF-8编码为0xC3 0xB6,被误按CP1252解码后正好对应你看到的ö,核心原因是psql客户端、控制台代码页、SQL脚本三者的编码不统一。

操作步骤

  • 首先确认C:\populate_users.sql脚本的保存编码,优先使用UTF-8编码保存脚本。
  • 调整控制台编码为UTF-8,替换你之前使用的chcp 1252:
    chcp 65001
    
  • 设置PostgreSQL客户端编码环境变量,指定psql用UTF-8解析输入内容:
    # Windows CMD 环境执行
    set PGCLIENTENCODING=UTF8
    
    # Windows PowerShell 环境执行
    $env:PGCLIENTENCODING = "UTF8"
    
  • (PowerShell环境可选)避免控制台输出也出现乱码,提前执行:
    $OutputEncoding = [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new($false)
    
  • 重新执行原导入命令即可:
    psql.exe -h localhost -U postgres -d my_database -f C:\populate_users.sql
    

备选方案(脚本为CP1252编码时使用)

如果执行上述步骤后仍存在乱码,说明你的SQL脚本本身是CP1252编码保存的,直接执行以下操作即可:

  • 保留chcp 1252的设置
  • 执行环境变量配置:
    # CMD 环境
    set PGCLIENTENCODING=CP1252
    
    # PowerShell 环境
    $env:PGCLIENTENCODING = "CP1252"
    
  • 重新执行psql导入命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 18:36:07