从命令行执行查询时PostgreSQL编码问题

时间:2013-10-10 08:29:31

标签: postgresql utf-8 character-encoding special-characters psql

我正在尝试执行存储在文件中的SQL查询。我正在使用以下命令执行:

psql -d DB_NAME -a -f QUERY_NAME.sql

我在SQL文件中有一些非英文文本,如 - સુરત

执行查询时,数据库中的文本看起来像 - ÃÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ

如何从命令行执行查询以使其正确运行?

1 个答案:

答案 0 :(得分:5)

确保client_encoding符合您文件的编码。检查您的系统区域设置。然后为psql使用匹配的命令行参数。 Quoting the manual here:

  

如果标准输入或标准输出中的至少一个是终端,   然后psql将客户端编码设置为“auto”,这将检测到   来自区域设置的适当客户端编码(LC_CTYPE   Unix系统上的环境变量)。如果这不成功   预期,可以使用环境覆盖客户端编码   变量PGCLIENTENCODING。

Linux shell示例:

env PGCLIENTENCODING='WIN1258' psql DB_NAME -a -f QUERY_NAME.sql

List of available encodings in the manual.