【问题标题】:Why fonts of a table headers don't display correctly inside of SQL Shell (psql)?为什么表头的字体在 SQL Shell (psql) 中不能正确显示?
【发布时间】:2020-05-26 03:32:00
【问题描述】:

请帮我解决 psql Shell 的问题。当我在 SQL Shell 中工作时,列标题显示不正确(这应该显示得更好,你知道解决它吗?我的操作系统是 windows 7 Ultimate SP1

就像这个例子:

                                          ╤яшёюъ срч фрээ√ї
    ╚ь     | ┬ырфхыхЎ | ╩юфшЁютър |     LC_COLLATE      |      LC_CTYPE       |
    ╧Ёртр фюёЄєяр

或者像这样:

                    ╤яшёюъ юЄэю°хэшщ
 ╤їхьр  |      ╚ь        |        ╥шя         | ┬ырфхыхЎ

我在 SQL Shell 中编写的完整命令:

Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Пароль пользователя postgres:
psql (10.11)
ПРЕДУПРЕЖДЕНИЕ: Кодовая страница консоли (866) отличается от основной
                страницы Windows (1251).
                8-битовые (русские) символы могут отображаться некорректно.
                Подробнее об этом смотрите документацию psql, раздел
                "Notes for Windows users".
Введите "help", чтобы получить справку.

postgres=# \l
                                          ╤яшёюъ срч фрээ√ї
    ╚ь     | ┬ырфхыхЎ | ╩юфшЁютър |     LC_COLLATE      |      LC_CTYPE       |
    ╧Ёртр фюёЄєяр
-----------+----------+-----------+---------------------+---------------------+-
----------------------
 postgres  | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
 template0 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
 template1 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
(3 ёЄЁюъш)


postgres=# CREATE TABLE flights (    id SERIAL PRIMARY KEY,    origin VARCHAR NO
T NULL,    destination VARCHAR NOT NULL,    duration INTEGER NOT NULL);
CREATE TABLE
postgres=# \d
                    ╤яшёюъ юЄэю°хэшщ
 ╤їхьр  |      ╚ь        |        ╥шя         | ┬ырфхыхЎ
--------+----------------+--------------------+----------
 public | flights        | ЄрсышЎр            | postgres
 public | flights_id_seq | яюёыхфютрЄхы№эюёЄ№ | postgres
(2 ёЄЁюъш)


postgres=#

我想,我不确定,也许问题就在这里?但是如何在这个表中添加新字体呢?

 postgres=# \l
                                          ╤яшёюъ срч фрээ√ї
    ╚ь     | ┬ырфхыхЎ | ╩юфшЁютър |     LC_COLLATE      |      LC_CTYPE       |
    ╧Ёртр фюёЄєяр
-----------+----------+-----------+---------------------+---------------------+-
----------------------
 postgres  | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
 template0 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
 template1 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
(3 ёЄЁюъш)

我阅读了这个网站https://www.postgresql.org/docs/8.4/multibyte.html#AEN29822 这与我的问题非常接近,但是根据这些信息,我只能更改表格内的文本字体,而无法更改列标题的字体。

【问题讨论】:

  • 您使用的是哪个操作系统?
  • Windows 7 终极版 SP1
  • 您需要更改cmd.exe 的字体,很可能还需要更改代码页(使用chcp
  • 是的,请参阅psql 在启动时为您提供的提示。
  • @a_horse_with_no_name 非常感谢!搞定了,和你说的一模一样,先换字体再用chcp!

标签: windows postgresql shell psql


【解决方案1】:

解决办法是: 步骤 1. 我将 cmd.exe 的字体样式更改为 Lucida Console! 步骤 2. 我使用命令:chcp 1251 步骤 3. 我使用命令:psql -d postgres -U postgres

现在这个显示正确,应该是这样!

但是每次重新启动cmd时我都需要使用chcp 1251,我不知道如何保存并让它永久保留。可能你知道吗?

C:\Users\zubr>chcp 1251
Текущая кодовая страница: 1251

C:\Users\zubr>psql -d postgres -U postgres
Пароль пользователя postgres:
psql (10.11)
Введите "help", чтобы получить справку.

postgres=# \l
                                          Список баз данных
    Имя    | Владелец | Кодировка |     LC_COLLATE      |      LC_CTYPE       |
    Права доступа
-----------+----------+-----------+---------------------+---------------------+-
----------------------
 postgres  | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
 template0 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
 template1 | postgres | UTF8      | Russian_Russia.1251 | Russian_Russia.1251 |
=c/postgres          +
           |          |           |                     |                     |
postgres=CTc/postgres
(3 строки)


postgres=# \d
                    Список отношений
 Схема  |      Имя       |        Тип         | Владелец
--------+----------------+--------------------+----------
 public | flights        | таблица            | postgres
 public | flights_id_seq | последовательность | postgres
(2 строки)


postgres=#

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多