【问题标题】:psql shell uses code page 850, windows uses 1252. How to solve change console code page?psql shell 使用代码页 850,windows 使用 1252。如何解决更改控制台代码页?
【发布时间】:2013-10-03 14:36:37
【问题描述】:

我已经安装了 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 Console,因为光栅字体不适用于 ANSI 代码页。

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

我在 Windows 7 - 64Bit 中工作。

【问题讨论】:

  • 您是否尝试过先启动 cmd.exe,然后启动 chcp 1252(或 chcp 850,您的 psql shell 会询问)?好像您在 psql shell 中键入了命令。您应该使用 windows run (Win+R) 输入命令并在该控制台窗口中启动 psql shell。
  • 奇怪,我犯了建议的错误,所以我尝试了你的建议。错误不断弹出。为了不犯错,我尝试了 cmd.exe /c chcp 1252 和 cmd.exe /c chcp 850。

标签: windows postgresql cmd localization codepages


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    在 psql 中输入 ! chcp

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

    ! dir 在 C:\Program Files\PostgreSQL\9.6\scripts 中显示了一个文件 runpsql.bat

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

    现在运行没有警告

    【讨论】:

    • 这在我从文件系统中双击runpsql.bat时有效,但是从命令行运行psql时仍然出现警告,你知道如何停止这个吗?
    【解决方案3】:

    我可以通过在 sql bash 中运行 SET CLIENT_ENCODING TO 'UTF-8'; 来解决此问题

    【讨论】:

    • 这对我不起作用。使用此命令后我的密码被破解,我不得不重新安装 postgres。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        据我所知,在 SQL shell 中你只需要输入\! chcp <codepage_you_need>

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

        为了解决这个问题,您需要转到属性(左上角)-> 字体-> 选择 Lucida 控制台。

        然后输入\! chcp 1251

        在那之后,一切都会好起来的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          • 2017-04-18
          • 2017-08-28
          • 1970-01-01
          • 2017-01-07
          相关资源
          最近更新 更多