了解了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)