psql shell使用代码页850,windows使用1252.如何解决更改控制台代码页?

时间:2013-10-03 14:36:37

标签: windows postgresql cmd localization codepages

我已经安装了PostgreSQL,想要建立一个新的数据库,一切都很顺利,直到我试图使用€符号。然后我知道,我在开始时发出的警告是有原因的。

启动psql shell时的警告是:

WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.

所以我要告诉我(来自PostgreSQL Documentation 9.2 - psql):


Windows用户注意事项

psql构建为“控制台应用程序”。由于Windows控制台窗口使用的编码与系统的其他部分不同,因此在psql中使用8位字符时必须特别小心。如果psql检测到有问题的控制台代码页,它将在启动时发出警告。要更改控制台代码页,需要做两件事:

  • 输入 cmd.exe / c chcp 1252 设置代码页。 (1252是适合德语的代码页;请将其替换为您的值。)如果您使用的是Cygwin,则可以将此命令放在 / etc / profile 中。
  • 将控制台字体设置为 Lucida控制台,因为光栅字体不适用于ANSI代码页。

当我键入 cmd.exe / c chcp 1252 命令时,出现语法错误。所以psql,无法识别命令。 出于绝望,我试图在cmd.exe本身做一些事情,也不起作用。

我在Windows 7中工作 - 64位。

6 个答案:

答案 0 :(得分:6)

您的数据库字符集是什么?如果它是UTF-8,那么在运行之前,你想在psql中使用什么,只需告诉控制台使用UTF-8编码: cmd.exe /c chcp 65001

答案 1 :(得分:2)

我在Windows 10中遇到了同样的问题。

在psql类型中! CHCP

它将我的设置显示为850.我通过执行以下操作将其更改为1252.

! dir在C:\ Program Files \ PostgreSQL \ 9.6 \ scripts

中显示了一个文件runpsql.bat

退出psql后从Windows运行我在管理员模式下运行Notebook并在REM运行psql语句上面添加命令chcp 1252

现在没有警告

答案 2 :(得分:1)

我能够通过在SQL bash中运行SET CLIENT_ENCODING TO 'UTF-8';来解决此问题

答案 3 :(得分:0)

您也可以使用powershell /c chcp 1252。 但是您必须在之前键入它,然后在 psql 控制台中输入。

答案 4 :(得分:0)

我在Windows 8中遇到了同样的问题。 您必须将chcp设置为1252。 使用命令cmd.exe /c chcp 1252,或者,如果使用的是Powershell,则使用powershell /c chcp 1252

答案 5 :(得分:0)

据我所知,在SQL Shell中,您只需要键入\! chcp <codepage_you_need>

不过,在那之后,您可能会遇到另一个问题:

enter image description here

要解决此问题,您需要转到属性(左上角)->字体->选择Lucida Console。

然后输入\! chcp 1251

在那之后,一切都必须没事。