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

PSQL执行COPY导入UTF-8 CSV报错字符无WIN1252对应编码如何解决

报错原因

PostgreSQL的COPY命令默认使用客户端字符编码解析导入文件,而非直接使用数据库的编码。你在Windows环境下运行psql客户端,系统默认控制台编码为WIN1252,psql会继承该编码作为默认客户端编码。哪怕你的CSV文件、数据库均为UTF-8编码,客户端也会将传入的UTF-8文件按WIN1252解析,遇到WIN1252不支持的字符(如你提到的重音Á)时就会抛出编码转换错误。

修复方案

按操作便捷度排序,可选择以下任意一种方案:

  • 直接在COPY语句中显式指定文件编码,无需修改其他配置,修改后的语句如下:
COPY movies(movie_id, title, year, runningtime) 
FROM 'C:\Users\Public\Documents\movie_file.csv' 
DELIMITER ',' 
CSV HEADER 
NULL AS 'Null'
ENCODING 'UTF8';
  • 每次启动psql后先执行编码设置语句,再运行COPY命令:
SET client_encoding = 'UTF8';

如果需要永久生效,可在Windows用户目录下新建psqlrc.conf文件,写入上述语句,后续启动psql时会自动加载该配置。

不建议尝试将Python输出的CSV改为WIN1252编码,该编码支持的字符范围远小于UTF-8,原始UTF-8数据中的很多特殊字符无法完成转换,会直接触发Python编码报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 10:54:02