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

Ank*_*kit 2 postgresql utf-8 character-encoding special-characters psql

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

psql -d DB_NAME -a -f QUERY_NAME.sql
Run Code Online (Sandbox Code Playgroud)

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

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

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

Erw*_*ter 5

确保client_encoding匹配文件的编码.检查您的系统区域设置.然后为psql使用匹配的命令行参数.在这里引用手册:

如果标准输入或标准输出中的至少一个是终端,则psql将客户端编码设置为"auto",这将从区域设置(Unix系统上的LC_CTYPE环境变量)检测适当的客户端编码.如果这不能按预期工作,则可以使用环境变量PGCLIENTENCODING覆盖客户端编码.

Linux shell的示例:

env PGCLIENTENCODING='WIN1258' psql DB_NAME -a -f QUERY_NAME.sql
Run Code Online (Sandbox Code Playgroud)

手册中可用编码的列表.