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

You*_*mon 28 postgresql warnings database-connection

使用PostgreSQL的,当我连接到使用DB \c testdbPostgreSQL数据库SQL提示里面.我成功连接到数据库但收到以下警告:

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-#
Run Code Online (Sandbox Code Playgroud)

这个警告意味着什么?怎么解决?

dvd*_*sng 23

psql文档:

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

要更改控制台代码页,需要做两件事:通过输入cmd.exe/c chcp 1252来设置代码页.(1252是适用于德语的代码页;将其替换为您的值.)如果您使用的是Cygwin ,您可以将此命令放在/ etc/profile中.

因此,要删除该警告,您需要chcp 1252在输入之前执行psql.使用chcp不带参数可以获得当前的代码页.

  • 将“chcp 1252”添加到 psql bat 文件本身会很有帮助,该文件在我的计算机上位于“C:\Program Files\PostgreSQL\12\scripts\runpsql.bat”。 (2认同)

Ric*_*PhD 7

请不要假设 Unix 修复程序适用于 Windows 用户。对于 Windows 10 和 PostgreSQL 12,将“user3423801”和“数字更长”的答案结合起来对我有用。(Windows 注册表破解不起作用。我还没有尝试重新启动。)无论如何,最好在 PSQL 启动脚本中修复它。

文件位置C:\Program Files\PostgreSQL\12\scripts包含文件runpsql.bat,您必须将 插入到该文件的cmd.exe /c chcp 1252 command正确位置。因此,编辑后的文件顶部应类似于下面的 5 或 6 行。

@echo off

REM Copyright (c) 2012-2014, EnterpriseDB Corporation.  All rights reserved

REM PostgreSQL server psql runner script for Windows

cmd.exe /c chcp 1252

SET server=localhost
SET /P server="Server [%server%]: "
Run Code Online (Sandbox Code Playgroud)


num*_*ger 6

为了使它更加明显,@ user3423801添加了该行的文件

cmd.exe /c chcp 1252
Run Code Online (Sandbox Code Playgroud)

scripts在您安装Postgre 的目录中.

例如,就我而言

C:\Program Files\PostgreSQL\9.3\scripts\runpsql.bat
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。当我通过批处理文件打开终端时它起作用。但是当我使用“sql”时,警告仍然弹出。 (2认同)

小智 6

CMD.exe的默认代码页与postgres的默认代码页不同...要使用注册表更改CMD.exe,请尝试以下操作:

  1. 开始->运行-> regedit
  2. 转到[HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor]
  3. 添加名为“ Autorun”的新字符串值,其值为“ chcp 1252”

然后重新打开CMD.exe

  • 我知道这已经有两年多了,但由于它没有被接受的答案,我想说这对我有用。 (4认同)

小智 6

打开 cmd.exe 并运行regedit.

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

新建一个名为:的字符串值Autorun,并将值更改为chcp 1252

完毕。

参考:https : //stackoverflow.com/a/30100565/8396969