powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Кодировка сообщений.
5 сообщений из 5, страница 1 из 1
Кодировка сообщений.
    #34274969
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какой кодировка выводятся сообщения в PostgreSQL?

Установил я lc_messages в postgresql.cfg в ru_RU. LANG в системе (дело происходит под Linux) ru_RU.UTF-8

В какой кодировке сообщения пишутся в log?

В какой кодировке сообщения отдаются клиенту и как этим управлять?
...
Рейтинг: 0 / 0
Кодировка сообщений.
    #34275014
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнения -
client_encoding UNICODE
server_encoding UTF8

В лог пишется в чем-то подозрительно напоминающем CP866.
...
Рейтинг: 0 / 0
Кодировка сообщений.
    #34275340
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так выглядит фрагмент сценария работы с psql.

==
test72483_2=# show client_encoding;
client_encoding
-----------------
UTF8
(1 запись)

test72483_2=# show server_encoding;
server_encoding
-----------------
UTF8
(1 запись)

test72483_2=# select 1 from sfsdfsf;
ERROR: "sfsdfsf"
test72483_2=# show lc_messages;
lc_messages
-------------
ru_RU.utf8
(1 запись)

test72483_2=# select 1 from sdfsdfsdf-sdfsdfsdf;
ERROR: "-" у символа 24
СТРОКА 1: select 1 from sdfsdfsdf-sdfsdfsdf;
^
test72483_2=#
==

Дело происходило в консоли в UTF-8. Квадратиками получились напечатные
(т.е. не имеющие отображения в UTF-8, насколько я понимаю) символы.
Особенно меня радует то, что слова "у символа" отображаются
в правильной кодировке.
"запись" пишет сам psql, так что тут все понятно.


Удавалось ли добиться русских сообщений в UTF?

Буду признателен на участие в этой оживленной дискуссии
кого-нибудь, кроме меня самого.
...
Рейтинг: 0 / 0
Кодировка сообщений.
    #34275408
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
-bash- 3 . 00 $ psql base
Welcome to psql  8 . 2 . 1 , the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

base=> show client_encoding;
 client_encoding
-----------------
 UTF8
( 1  запись)

base=> show server_encoding;
 server_encoding
-----------------
 UTF8
( 1  запись)

base=> select  1  from sfsdfsf;
ERROR:  отношение "sfsdfsf" не существует
base=> select  1  from sdfsdfsdf-sdfsdfsdf;
ERROR:  ошибка синтаксиса в или рядом "-"
LINE  1 : select  1  from sdfsdfsdf-sdfsdfsdf;
                               ^
base=> show lc_messages;
 lc_messages
-------------
 ru_RU.UTF- 8 
( 1  запись)

base=> \q
-bash- 3 . 00 $ locale
LANG=ru_RU.UTF- 8 
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
-bash- 3 . 00 $ uname -a
Linux pg-server  2 . 6 . 12 - 1 .1381_FC3smp # 1  SMP Fri Oct  21   04 : 03 : 26  EDT  2005  i686 i686 i386 GNU/Linux
-bash- 3 . 00 $ rpm -q postgresql
postgresql- 8 . 2 . 1 -1PGDG
-bash- 3 . 00 $ rpm -q postgresql-server
postgresql-server- 8 . 2 . 1 -1PGDG
...
Рейтинг: 0 / 0
Кодировка сообщений.
    #34276140
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исследования показали, что если делать initdb c --locale=ru_RU.utf8, то все нормально.
Если initdb запускался с --locale=ru_RU, то все плохо (даже если потом исправить в postgresql.conf
lc_messages c ru_RU на ru_RU.utf8).

Никаких других отличий в postgresql.conf нет, однако кластеры ведут себя по-разному.

Параметр --encoding на ситуацию не влияет.

Получается, что если encoding (а не только locale) сообщений существенен, то он д.б. задан при инициализации кластера, и никак иначе. Или не задан вовсе - тогда locale возьмут из окружения, а если LANG равен чему-нибудь типа ru_RU.UTF-8, то все будет работать по-русски без специальных усилий.

Буду рад, если кто-нибудь сможет подтвердить или опровергнуть мои изыскания.

Спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Кодировка сообщений.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]