UTF-8输出不再适用于psql

时间:2019-12-07 20:42:39

标签: windows postgresql utf-8 psql

了解了PostgreSQL编码系统和Windows代码页的一般原理并使用了一段时间后,我不再从psql获得有效的UTF-8输出,我不知道为什么。

我知道PostgreSQL: encoding problems on Windows when using psql command line utility上的stackoverflow帖子,并且我已经仔细检查了此处提供的解决方案不能解决我的问题-请参阅下文。

一切都很好,只要我坚持使用(德语)默认的Windows代码页/编码(1252 / WIN1252),但是一旦切换到UTF-8(65001 / UTF8),我就会在控制台窗口中看到乱码

请查看我尝试的以下命令。 我不仅对提示我可能做错了什么感兴趣,而且还对您在系统上执行相同命令的结果感兴趣,因为我不确定当前系统是否有问题。

使用cmd /u

启动控制台窗口
Microsoft Windows [Version 10.0.18363.476]
(c) 2019 Microsoft Corporation. Alle Rechte vorbehalten.

C:\WINDOWS\system32>psql --version
psql (PostgreSQL) 12.1

C:\WINDOWS\system32>psql -c "SELECT version()"
                          version
------------------------------------------------------------
 PostgreSQL 12.1, compiled by Visual C++ build 1914, 64-bit
(1 Zeile)

C:\WINDOWS\system32>chcp
Aktive Codepage: 1252.

C:\WINDOWS\system32>psql -c "SHOW SERVER_ENCODING"
 server_encoding
-----------------
 UTF8
(1 Zeile)

C:\WINDOWS\system32>psql -c "SHOW CLIENT_ENCODING"
 client_encoding
-----------------
 WIN1252
(1 Zeile)

psql -c "CREATE TABLE demo(demo text)"
CREATE TABLE

C:\WINDOWS\system32>psql -c "INSERT INTO demo VALUES('ÄÖÜäöüß')"
INSERT 0 1

C:\WINDOWS\system32>psql -c "SELECT * FROM demo"
  demo
---------
 ÄÖÜäöüß
(1 Zeile)

C:\WINDOWS\system32>chcp 65001
Aktive Codepage: 65001.

C:\WINDOWS\system32>SET PGCLIENTENCODING=UTF8

C:\WINDOWS\system32>psql -c "SHOW CLIENT_ENCODING"
 client_encoding
-----------------
 UTF8
(1 Zeile)

C:\WINDOWS\system32>psql -c "SELECT * FROM demo"
  demo
---------
 ÄÖÜäöüß
(1 Zeile)

0 个答案:

没有答案