Pandas含希腊字符DataFrame写入PostgreSQL出现编码错误和乱码如何解决
解决方案
核心原因
首先可以执行show server_encoding;验证数据库服务端编码,如果结果为UTF8,说明你写入的希腊字符存储完全正常,报错和乱码均由Windows CMD客户端的编码配置不匹配导致:
- WIN1252是西欧字符集,完全不包含希腊字符,因此转码时直接报错
- WIN1253虽然是希腊字符集,但CMD默认代码页、字体不匹配,因此显示为乱码
具体操作步骤
- 打开CMD后先执行命令切换UTF8代码页:
chcp 65001 - 修改CMD显示字体:右键CMD窗口顶部标题栏→「属性」→「字体」,选择支持多语言的字体如 Consolas、Lucida Console,不要使用默认点阵字体。
- 重新连接PostgreSQL后,执行命令设置客户端编码为UTF8:
可选:连接psql时可以直接指定编码,无需后续手动设置,命令示例:SET client_encoding TO 'UTF8';psql -U user -d test_db --encoding=utf8 - 再次执行查询即可正常显示希腊字符:
select * from sq_exp;
永久生效配置(可选)
如果不想每次打开CMD都手动修改代码页,可以通过修改注册表实现自动配置:
- 按下
Win+R输入regedit打开注册表编辑器 - 定位到路径:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor - 右侧新建「字符串值」,名称设为
autorun,数值数据设为chcp 65001,保存后重启CMD即可生效。
内容的提问来源于stack exchange,提问作者stavros_p
相关产品推荐
相关产品推荐

