【发布时间】:2014-01-24 00:42:42
【问题描述】:
我在 Windows 2008 R2 上的集中监控系统中工作,我已经安装了 PostgreSQL 9.3 以便从命令行使用 psql。
当我尝试访问一些远程 Postgres(在我的主要情况下为 8.4)时,我遇到了编码错误:
命令:
psql.exe -h 192.168.114.12 -p 5432 -d db_seros_transaccion -U postgres -f script.sql
错误:
psql: FATAL: la conversión entre WIN1252 y LATIN1 no está soportada
我尝试添加句子
SET client_encoding = 'UTF8';
在我的脚本中,但问题仍然存在(以及其他编码,如 LATIN1 和 WIN1252)。
谷歌搜索后,我发现有人更新服务器中的某些行以建立连接,这对我来说是个问题。
谁能帮我在不更新的情况下使用 psql 建立连接?有可能吗?
【问题讨论】:
-
您是否尝试过thread 中建议的解决方案,即在
psql之前运行chcp 65001? -
是的,提出问题后,尝试使用 chcp 65001, 437, 1252 进行测试。不行。现在我尝试使用 sqlrun 抛出一个 odbc(在几分钟内得到结果;P)
-
8.4 在 Linux 上,对吧?
-
除了
chcp 65001来设置一个unicode 代码页,您可能还需要告诉psql它在启动过程中在一个unicode 终端中。稍后您不能SET client_encoding,因为您需要一个已经工作的连接。尝试在启动psql之前运行SET PGCLIENTENCODING=utf-8(在chcp 65001之后)并报告。 -
非常感谢Craig Ringer,成功了,终于成功了!你现在是我的新偶像!步骤为: 1. 打开cmd 2. SET PGCLIENTENCODING=utf-8 3. chcp 65001 4. psql -h 192.168.114.12 -U postgres
标签: sql postgresql command-line character-encoding psql