【问题标题】:PostgreSQL: encoding problems on Windows when using psql command line utilityPostgreSQL:使用 psql 命令行实用程序时 Windows 上的编码问题
【发布时间】: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


【解决方案1】:

非常感谢Craig Ringer,成功了,终于成功了!你现在是我的新偶像!

步骤如下:

  1. 打开cmd
  2. SET PGCLIENTENCODING=utf-8
  3. chcp 65001
  4. psql -h your.ip.addr.ess -U postgres

【讨论】:

  • 我最近遇到了一个相关问题,这帮助我解决了一些问题。我只想对它做一点说明:服务器和客户端编码确实很重要,当我的PGCLIENTENCODING 设置为iso8859-1 并且我运行chcp 1252 时,我只能成功地将psql 发送到我的远程服务器。我认为这是因为我将服务器编码设置为 latin1(又名 iso8859-1)。所以:永远注意编码!
  • 嗨,费伦,是的,还有更多。这几天我不得不将一些脚本从 2008 年迁移到 2012 年。并且编码问题又回来了,一些在 2008 年运行良好的脚本需要更改编码或类似的东西。
  • 第 4 行是做什么的?我想得到1,2,3。但我不确定 4!!
  • 嗨,DT,是的,适用于 Win10(我的测试:pasteboard.co/HZ1uvgy.png
  • 只想补充一句我刚刚想通的。永远不要使用 PowerShell。对转储进行编码就像在标准 shell 上的魅力一样,但对于 PowerShell 则完全没有。就我而言,该文件一直使用 UTF-16 编码。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
相关资源
最近更新 更多