PostgreSQL UTF8编码下psql.exe查询特殊字符乱码求助
解决psql.exe查询捷克变音符号乱码问题
核心原因
psql的输出编码与Windows终端(或输出文件)的编码不匹配,即便手动设置client_encoding为UTF8,终端默认代码页(如GBK)仍会导致显示乱码。
具体解决方案
临时切换终端代码页
在PowerShell中先执行:chcp 6500165001是UTF-8对应的Windows代码页,切换后再运行你的psql查询命令:
./psql.exe -h localhost -p 5433 -U postgres -d experimental -c "SELECT * FROM diacritics"通过环境变量默认设置编码
临时生效:在PowerShell中设置环境变量后启动psql:$env:PGCLIENTENCODING = 'UTF8' ./psql.exe -h localhost -p 5433 -U postgres -d experimental -c "SELECT * FROM diacritics"永久生效:在Windows系统环境变量中添加
PGCLIENTENCODING,值设为UTF8,之后所有psql会话都会自动使用UTF8编码。正确输出到UTF8文件
直接重定向可能生成ANSI编码文件,改用PowerShell的Out-File指定编码:./psql.exe -h localhost -p 5433 -U postgres -d experimental -c "SELECT * FROM diacritics" | Out-File -Encoding utf8 output.txt打开output.txt时选择UTF8编码即可正常显示。
进入psql会话后再执行查询
避免一次性命令可能的编码设置时序问题:./psql.exe -h localhost -p 5433 -U postgres -d experimental进入会话后执行:
SET client_encoding = 'UTF8'; SELECT * FROM diacritics;
内容的提问来源于stack exchange,提问作者dva
相关产品推荐
相关产品推荐

