PostgreSQL警告:控制台代码页(437)与Windows代码页(1252)不同。

52

当我在 PostgreSQL 数据库 SQL 提示符中使用 \c testdb 连接到数据库时,我成功地连接到了该数据库,但是收到以下警告:

postgres-# \c testdb
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
You are now connected to database "testdb" as user "postgres".
testdb-#

这个警告表示什么?如何解决它?


@jww,你能在这里发布一下stackoverflow、super user和database admins的准则链接吗? - Cale Sweeney
18个回答

1

在我寻找了很久的答案后,我在PostgreSQL网站上找到了这个帮助电子邮件链,基本上建议从打开的命令窗口中运行chcp 1252

然后我就能够运行我的PostgreSQL命令而不会出现代码警告。

注意:此更改不会持久保存,因此您必须每次打开新的命令窗口并计划使用PostgreSQL命令时运行它。


1
在命令提示符终端中,只需键入chcp 1252即可;无需打开任何文件或进入任何文件路径。
例如:
C:\Users\dsmith> chcp 1252   

之后,当您从此命令终端登录到psql时,您将不会看到控制台代码警告的问题。


1

我无法弄清楚如何在Cygwin全局设置它。但是,在我的bash脚本中似乎可以使用这种方法。

#!/bin/bash
cmd.exe /c chcp 1252 && psql -h myserver.postgres.database.azure.com -U myuser@prod-au -d mydatabase

我刚刚在Windows 10的命令提示符中粘贴了“cmd.exe /c chcp 1252”,它起作用了。谢谢。 - loekTheDreamer

0

基本上,将控制台应用程序的编码从8位设置为 utf-8 Windows 1252。

对于git bash 用户,请在运行postgres之前运行命令chcp.com 1252

chcp是一个windows控制台命令,因此要在git bash上执行它,您可能需要添加.com

git bash无法自行将chcp扩展为完整的可执行文件,因此您需要键入完整的命令。

这里


你能进一步解释一下吗?为什么你认为这有帮助呢? - Nico Haase
代码页1252不是UTF8。如果是的话,我就不会得到UTF8错误……它基本上是一种ISO编码。 - oligofren

0
在终端屏幕上进入以下目录:
    C:\Program Files\PostgreSQL\14\bin

注意:无论使用哪个数据库版本,都要进入相应版本文件的bin文件夹

  1. 在创建用户或访问数据库用户之前,必须编写以下代码;
    cmd.exe /c chcp 1252

0
对于Windows用户:
我无法更改C:\Program Files\PostgreSQL\xx\scripts\runpsql.bat文件,因为我没有管理员权限(工作电脑)。所以我打开了psql启动文件(%appdata%\postgresql\psqlrc.conf,如果不存在,你可以创建一个),然后简单地添加了\! chcp 1252。重新启动服务器,一切正常运行。

0

我目前正在使用psql 15.2,并将其与git bash终端一起使用。

为了能够从任何地方使用它,我首先将C:\Program Files\PostgreSQL\15\bin添加到我的系统环境变量中。然后我注意到在执行命令psql时,我收到了与此线程中显示的相同的错误。

我想出的解决方案是:

我将以下行添加到我的.bash_profile文件(C:\ Users<user>.bash_profile)中

# psql conf

chcp.com 1252 >/dev/null
alias psql='psql.exe'

# end of psql conf

请注意,当在git bash终端中运行chcp命令时无法正常工作,但在运行chcp.com时可以正常工作。
在运行chcp.com 1252后,当您运行psql -U <username>并登录帐户时,错误会再次显示。只有当您运行psql.exe -U <username>时,错误才不再显示。这就是为什么我添加了别名的原因。
如果有人知道在这种情况下运行psql与运行psql.exe不同的原因,请告诉我。

0

在Windows中,编辑C:\ Program Files \ PostgreSQL \ xx \ scripts \ runpsql.bat

如果您没有写访问权限,您可以通过管理员命令提示符编辑该文件。您还可以进入文件的属性并编辑安全权限以包括用户/组的写访问权限。

在SET变量之前添加以下内容,作为自己的行:chcp&lt; console_code&gt;

用psql shell警告给出的代码替换<console_code>

最后,右键单击控制台的顶部,在属性中更改字体为 Lucida Console 。这是一种与代码页面正确配合使用的字体。

更多信息可以在此处找到:https://www.postgresql.org/docs/15/app-psql.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接