Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Сразу оговорюсь с PostgreSQL сталкиваюсь впервые и как всегда встает проблема с кодировками. Есть сторонняя база в PostgreSQL 8.1. В базу пишутся данные из приложения. Нам дали удаленный доступ к этой БД. При открытии таблиц из pgAdmin, слова на русском отображаются криво, смотри картинку: Декодер Лебедева показал, что это "Холодная вода" CP1252 → CP1251 Знаю, что база на win машине. Приложение которое пишет данные в базу разрабатывалось в Германии. Кодировка базы UTF8. Как я на своем компьютере смогу посмотреть русские буквы из pgAdmin ? Если нужны еще какие-то данные по серверу/клиенту готов предоставить. ----------- Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2013, 17:45 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Еще раз - читаем доку http://www.postgresql.org/docs/8.4/interactive/multibyte.html#AEN29822 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2013, 08:12 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
landy, Прочел, спасибо. Но не знаю чем от туда я могу помочь себе. Если речь идет о SET CLIENT_ENCODING TO ... То я уже перепробовал много вариантов и ничего не получается. Я уже давно ненавижу все это многообразие кодировок, но каждый раз приходится искать решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2013, 09:35 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Я так понимаю у вас Виндовс? Запускаете cmd psql ... >set client_encoding='866' >select * from ... или попробуйте сменить кодовую страницу в консоли cmd далее пробуйте chcp 1252 (или 1251 и т д) psql ... > select * from ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2013, 12:25 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
landy, В командной строке помогло перед запуском psql выполнить chcp 1251. После этого select выводит корректно русские буквы. Вопрос: а как добиться такого результата при работе с pgAdmin и через ODBC драйвер? Буду признателен любым подсказкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2013, 15:27 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
landy, Что-то ничего пока не выходит. Я могу произвести манипуляции только на клиентской машине. Трогать сервер и базу никак нельзя. Для начала хочу настроить pgAdmin, чтобы в нем корректно отображались данные. Почитав форумы заметил что у людей в основной массе проблем с pgAdmin не было, но были проблемы с консолью. В моем случае практически наоборот. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 09:17 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Belkin, Смотрите pgadmin всегда без вариантов использует UTF8 кодировку (кроме редкого случая SQL-ASCII базы): http://www.postgresql.org/message-id/CA+OCxozjhM5wAj84vjRNWX5TLEYEMYeh37U=ibJt22m5nqtJmA@mail.gmail.com]http://www.postgresql.org/message-id/CA+OCxozjhM5wAj84vjRNWX5TLEYEMYeh37U=ibJt22m5nqtJmA@mail.gmail.com я почему то думаю что у вас скорее проблема выбора шрифта правильного в PgAdmin который бы корректно бы показывал UTF8 русские буквы. Вы из под какой OS запускаете pgadmin и стоит ли там поддержка русского языка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 11:19 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Все делается из под Windows. Русский установлен. Машина с базой тоже виндовая, там установлен русский язык и немецкий, возможно английский. Когда я был на месте, то успел заметить что там тоже в pgAdmin русские буквы некорректно отображаются (на 100% не уверен), но в приложении все красиво. Там с базой никто не работает кроме как через приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 11:34 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Belkin, по мне так проще пальцем указать. Сам долго понимал, что там да как с кодировками, когда пришло просветление, то стало удобно пользоваться :) Для пгАдмин надо делать set client_encoding='1251', после коннекта и до sql запроса, это если sql запросом из него смотреть. Еще есть SQL Manager Lite for PostgreSQL он умеет кодировку выставлять сам при коннекте к базе. Там настройки есть при создании коннекта к БД. Если хотите использовать ODBC, который psqlodbc, то там не так все просто, там есть ситуация, когда внутри драйвера постоянно передергивается set client_encoding , но он, кстати, передергивается в 1251 :) ЗЫЖ мне тут, кстати, совет давали хороший. Использовать в БД utf-8. Это реально помогает захватить мир, но это не ваш случай наверно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 11:43 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Mixantia, Вы наверное имели ввиду win1251, а не просто 1251. Это то что я сделал самым первым делом. после установки клиента в win1251 и запуске select, появляется следующая ошибка: Код: sql 1. Вот что установлено на сервере в posgresql.conf Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Может это как-то поможет. Я уже замучался с этим отображением... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 11:58 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Belkin, Чтото мне кажется, что автоматом не сможете вы с такой базы видеть русские символы http://www.postgresql.org/docs/9.2/static/multibyte.html#AEN33095 для LATIN1 нет автоматической перекодировки в WIN1251 База ваша наверно тоже создана в LATIN1 ? Я все извращения с кодировками делал в Russian локализации (win1251 <-> win866) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 13:46 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Mixantia, В консоли это как-то получается: В командной строке помогло перед запуском psql выполнить chcp 1251. После этого select выводит корректно русские буквы. Да и программа как-то пишет/читает эти данные. Кодировка базы UTF8. Вот такая непонятка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 14:46 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Belkin, Вы смотрите таблицу через редактор sql или через меню просмотр данных? Если через sql редактор, то перед select надо написать set client_encoding='WIN1251'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 16:06 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Mixantia, Я смотрел и так и так. В редакторе sql я вставлял set client_encoding='WIN1251'; и тогда возникает ошибка: ERROR: character 0xc3a2 of encoding "UTF8" has no equivalent in "WIN1251" В общем, какой-то замкнутый круг. Но, так хочется и нужно его разорвать..! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 16:14 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
пробуйте другие кодировки в set client_encoding типа win866 win1252 я в них не очень разбираюсь :) в своем проекте я только 866 и 1251 использовал, все туда сюда конвертилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 19:24 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
попробуйте запустить pgAdmin через батник set CLIENTENCODING='LATIN1' (или 1252) pgadmin.exe Мне кажется, в БД данные лежат в 1251, т е они передаются и записываются без конвертации из 1251 Когда вы в сессии устанавливаете set client_encoding to '...' данные конвертятся из 1251 (сервер считает, что они в LATIN1) в 1251 через таблицу LATIN1->1251 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 19:41 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
т е когда вы сделали chcp1251 в консоли, вы сменили просто кодовую таблицу для отображения данных, а об этом psql не догадывается, он что получил, то и отобразил - без конвертации а т к он получил в 1251 - он просто вывел то, что получил на консоль (конвертировать через set client_encoding его не просили) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2013, 19:45 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Если pgAdmin использует UTF-8, он скорее всего будет делать конвертацию из той кодировки(у вас однобайтовая) в UTF-8. Но т к у вас будет latin1(чтобы не конвертировалось сервер БД-> клиент), а фактически 1251, помеченные как latin 1 будет конвертация 1251 на таблице latin1->UTF-8, т е каша Используйте psql или настройте сервер правильно(пересоздав БД и перегрузив данные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2013, 07:40 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
landyЕсли pgAdmin использует UTF-8, он скорее всего будет делать конвертацию из той кодировки(у вас однобайтовая) в UTF-8. Но т к у вас будет latin1(чтобы не конвертировалось сервер БД-> клиент), а фактически 1251, помеченные как latin 1 будет конвертация 1251 на таблице latin1->UTF-8, т е каша Используйте psql или настройте сервер правильно(пересоздав БД и перегрузив данные) Вот вы "накрутили" про кодировки... я толком и не понял. Я уже склоняюсь к тому, что придется использовать psql. Так как моя задача сводится к тому, что нужно забрать с того сервера часть данных и залить в SQL Server. То хочу попробовать еще через copy и промежуточный сервер PostreSQL. Пока жду доступ к папке на сервере из которой буду забирать файлы после copy. Надеюсь там проблем с кодировкой не возникнет. А так хотелось сделать все по простому через ODBC драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 12:19 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
BelkinlandyЕсли pgAdmin использует UTF-8, он скорее всего будет делать конвертацию из той кодировки(у вас однобайтовая) в UTF-8. Но т к у вас будет latin1(чтобы не конвертировалось сервер БД-> клиент), а фактически 1251, помеченные как latin 1 будет конвертация 1251 на таблице latin1->UTF-8, т е каша Используйте psql или настройте сервер правильно(пересоздав БД и перегрузив данные) Вот вы "накрутили" про кодировки... я толком и не понял. Я уже склоняюсь к тому, что придется использовать psql. Так как моя задача сводится к тому, что нужно забрать с того сервера часть данных и залить в SQL Server. То хочу попробовать еще через copy и промежуточный сервер PostreSQL. Пока жду доступ к папке на сервере из которой буду забирать файлы после copy. Надеюсь там проблем с кодировкой не возникнет. А так хотелось сделать все по простому через ODBC драйвер. чтобы работать через ODBC база на той стороне должна быть в 1251 а не в latin1 с данными в 1251. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 13:09 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Получилось сделать только через промежуточную базу. 1. Сделал COPY TO на базе с "кракозябрами" 2. Скопировал/переместил файл к себе (можно исключить шаг) 3. Залил в свою базу PostgreSQL через COPY FROM предварительно установив set client_encoding to 'win1251'; 4. Через ODBC и link server в SQL Server залил данные. Всем кто пытался помочь - ОГРОМНОЕ спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2013, 15:40 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток! Тематика этого поста схожа с моей проблемой, поэтому решил не плодить новых тем. Помогите вот с такой непоняткой: Есть виндовый сервер, там Postgresql 9.5.3, сидит БД (кодировка = utf-8, сопоставление = Russian_Russia.1251). Эту БД я бэкапю с помощью pg_dump в файл *.sql. Затем беру другой сервер с аналогичными параметрами, где заранее создаю БД с таким же названием, как и та, которую я забэкапил, этой базе я задал такие же кодировку и наименование. Открываю cmd и пишу: C:\Users\администратор>"c:\Program Files\PostgreSQL\9.5\bin\psql.exe" -U postgres -d <mydatabasename> -f E:\mydatabasename_dump.sql Запускаю, ввожу пароль для postgres, начинается восстановление...все вроде бы хорошо, но тут хлоп - какая-то ошибка проскакивает (остановку на ошибке я не делаю, так как дело-то в основном все-равно для тестов, не страшно). Но вот ошибка эта выводится в кракозябрах: psql:E:/mydatabasename_dump.sql:70: Р?РЁР?Р'Р?Р?: С"С?Р?РєС┼РёС? "writenavdatafromtable" С? Р°С?Р?С?Р?РчР?С'Р°Р?Рё С'акиС: С'РёРїР?Р? С?Р¶Рч С?С?С%РчС?С'Р?С?РчС' Т.е. мне не страшно, что сами ошибки выпадают. Это в принципе ожидалось. Мне бы их как-то прочитать. Что я уже только не пробовал. и chcp с 866 на 1251 менял, и --set client_encoding='WIN1251' делал, и даже 'WIN866' пробовал (советовали тут в одном гайде). Все-равно кракозябры. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:13 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Kerno, 1. Открой cmd.exe 2. Установи шрифт Lucida Console 3. Установи переменную: SET LANGUAGE=ru 4. Выполни команду: psql --help Что выводится? Но я бы предложил читать сообщения об ошибках на английском. Для этого можно после запуска cmd.exe выставить переменную: SET LANGUAGE=en А для того чтобы данные правильно выгружались/загружались, важно использовать одну и туже кодировку для pg_dump при выгрузке и psql/pg_restore при загрузке. Поскольку БД в UTF8, имеет смысл перед запуском pg_dump выставить: SET PGCLIENTENCODING=UTF8 А в самой команде использовать опцию encoding: pg_dump --encoding=UTF8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:00 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Забыл Павел Лузанов1. Открой cmd.exe 1.1. Выполни: chcp 1251 2. Установи шрифт Lucida Console 3. Установи переменную: SET LANGUAGE=ru 4. Выполни команду: psql --help Что выводится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:02 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, спасибо за ответ! автор1. Открой cmd.exe 2. Установи шрифт Lucida Console 3. Установи переменную: SET LANGUAGE=ru 4. Выполни команду: psql --help Что выводится? Но я бы предложил читать сообщения об ошибках на английском. Для этого можно после запуска cmd.exe выставить переменную: SET LANGUAGE=en Попробовал. Help выводит корректно. На всякий случай выставил SET LANGUAGE=en, проверил - хелп вывелся на английском. Отработал комманду восстановления - ошибки все-равно пошли в кракозябрах. авторА для того чтобы данные правильно выгружались/загружались, важно использовать одну и туже кодировку для pg_dump при выгрузке и psql/pg_restore при загрузке. Поскольку БД в UTF8, имеет смысл перед запуском pg_dump выставить: SET PGCLIENTENCODING=UTF8 А в самой команде использовать опцию encoding: pg_dump --encoding=UTF8 Попробую это, но правильно ли я понял, что вот мою конкретную проблему с нечитабельностью сообщений об ошибках это не решит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 12:22 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
KernoПопробовал. Help выводит корректно. На всякий случай выставил SET LANGUAGE=en, проверил - хелп вывелся на английском. Отработал комманду восстановления - ошибки все-равно пошли в кракозябрах. А если перед командой восстановления сделать: SET PGOPTIONS='-c LC_MESSAGES=en_US.UTF8' KernoПопробую это, но правильно ли я понял, что вот мою конкретную проблему с нечитабельностью сообщений об ошибках это не решит? Правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 14:33 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
авторА если перед командой восстановления сделать: SET PGOPTIONS='-c LC_MESSAGES=en_US.UTF8' Ввел эту команду в cmd перед командой восстановления, затем ввел: Код: powershell 1. не помогло. получил: авторpsql: Р'Р?Р-Р?Р?: Р?РчР?РчС?Р?С<Р№ Р°С?Р?С?Р?РчР?С' РєР?Р?Р°Р?Р?Р?Р?Р№ С?С'С?Р? РєРё Р?Р>С? С?РчС?Р?РчС?Р?Р?Р?Р? РїС?Р?С+РчС?С?Р°: '-c ПОДСКАЗКА: Р"Р>С? Р?Р?РїР?Р>Р?РёС'РчР>С?Р?Р?Р№ РёР?С"Р?С?Р?Р°С+РёРё РїР?РїС?Р?Р +С?Р№С'Рч "postgres --help". Наверняка что-нибудь про то, что такая БД, и ее сущности, уже существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 10:38 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Kernoне помогло. получил Почему ты считаешь, что не помогло? Заказал utf-8 - получил utf-8. chcp 65001 спасёт ОРД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 14:36 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Это не помогло решению моей проблемы, а моя проблема в том, что не отображаются сообщения об ошибках в читабельном виде. После ввода предложенной команды (chcp 65001), получил вот это: авторC:\Users\администратор>chcp 65001 Active code page: 65001 C:\Users\администратор>"C:\Program Files\PostgreSQL\9.5\bin\psql.exe" -U postgres -d basename-f e:\basename.sql П psql: Р ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 14:53 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Kerno, Если желание разобраться еще не пропало, то можно продолжить. 1. Для начала, какой дистрибутив PostgreSQL используете, где брали? 2. В какой кодировке e:\basename.sql (в UTF8?). Можно на него взглянуть? 3. Запускаем cmd.exe 4. шрифт Lucida Console 5. chcp 1251 6. SET LANGUAGE=en 7. SET PGCLIENTENCODING=WIN1251 8. SET PGOPTIONS='-c LC_MESSAGES=C' 9. SET Дальше интересует вывод на экран от команд: 9. Запускаем psql (без указания дамп файла): psql.exe -U postgres -d basename 10. \list basename 11. \encoding 12. show lc_messages; Вот всё что на экране появилось после запуска cmd.exe - всё сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 15:11 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Конечно. автор1. Для начала, какой дистрибутив PostgreSQL используете, где брали? 2. В какой кодировке e:\basename.sql (в UTF8?). Можно на него взглянуть? 3. Запускаем cmd.exe 4. шрифт Lucida Console 5. chcp 1251 6. SET LANGUAGE=en 7. SET PGCLIENTENCODING=WIN1251 8. SET PGOPTIONS='-c LC_MESSAGES=C' 9. SET Дальше интересует вывод на экран от команд: 9. Запускаем psql (без указания дамп файла): psql.exe -U postgres -d basename 10. \list basename 11. \encoding 12. show lc_messages; Вот всё что на экране появилось после запуска cmd.exe - всё сюда. 1. select version(): "PostgreSQL 9.5.3, compiled by Visual C++ build 1800, 64-bit" Брал на оф.сайте 2.Notepad++ мне подсказывает, что файл в кодировке UTF8. Могу процитировать начальные настройки из файла, там где всякие переменные задаются, но содержимое таблиц дать не могу: Код: sql 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. 3.-8.: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Сделал. 9. Не могу подключиться к базам данных. По ходу что-то не так с инициализацией подключения после SET PGOPTIONS='-c LC_MESSAGES=C' Код: powershell 1. 2. 3. 4. 5. 6. Пока что ищу способ отменить этот параметр, чтобы подтвердить свою догадку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 17:00 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Kerno, Да что его искать. Нужно удалить переменную: SET PGOPTIONS= Что теперь после подключения к psql с остальными командами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 17:11 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, угу: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. автор10. \list basename 11. \encoding 12. show lc_messages; Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 17:44 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Kerno, Нашел ненуженый win7, поставил PostgreSQL с оф. сайта (это версия EnterpriseDB). Вот что получается. 1. Заставить корректно работать окно cmd.exe, UTF8 и psql у меня не получается. Т.е. после установки chcp 65001 и выставления параметра client_encoding=UTF8 psql всё равно работает некорректно. 2. Переменная PGOPTIONS почему то приводит к ошибке подключения, хотя синтаксис вроде верный. Поэтому предлагаю следующее. Сообщения. Их лучше выводить на английском. Сообщения бывают двух видов: сообщения сервера и сообщения клиентских утилит (psql, pg_dump). Клиентские сообщения переводятся на английский установкой переменной: SET LANGUAGE=en (это один из многих вариантов) Сообщения сервера можно переключить на английский так. Заходим в psql и выполняем (это нужно сделать один раз): alter system set lc_messages to 'C'; select pg_reload_conf(); Сами данные. Текущая ситуация. pg_dump был сделан в UTF8 и в самом начале скрипта выставляет client_encoding в UTF8. Так что данные должны восстанавливаться правильно, но в окне cmd будут отображаться некорректно. Для работы с psql, как уже и говорили: chcp 1251 перед запуском psql. Кириллица будет использоваться корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2016, 18:03 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
В официальной сборке для Windows есть проблемы с русской кодировкой. Год назад я с этим плотно занимался. Для официальной сборки помогало только переключение на английский всех сообщений. Когда я делал свою сборку, проблема решилась правильной библиотекой GETTEXT и ICONV. Свои сборки я размещал здесь: http://vvs.ru/pg , но последние версии не собирал. Сборки от posgrespro этими глюками вроде бы также не страдают: http://postgrespro.ru/products/download ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 01:18 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Воо! То что нужно. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 11:59 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Виктор, привет! Вынужден признать, что все три сборки (EnterpriseDB, PostgresPro и твоя) работают с UTF8 из cmd.exe одинаково и некорректно. Точнее не работают. Вот как это выглядит: Код: sql 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. Т.е. установив кодировку UTF8 (chcp 1251 и правильные шрифты) я попробовал: - вывести сообщения клиента: psql --help - сделать запрос к БД: \list - вывести сообщения сервера: ошибочная команда select1; Ничего из вышеперечисленного с кириллицей не работает. Да, можно переключиться в win1251 (chcp 1251), тогда всё корректно. Но база то в UTF8, а все утилиты постгреса - консольные и получается, что не могут корректно работать в UTF8. Взять pg_dump. Он должен выгружать в UTF8, но потом при восстановлении на экране кракозябры будут, хотя восстановится всё корректно. В общем, не аккуратненько. Спрошу у наших, можно ли ситуацию поправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 12:09 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Ух ты. У нас оказывается идет доработка и тестирование новой сборки под windows, в которой помимо корректной работы с UTF8 будет еще и автодополнение работать. Дали поиграться, вот что получается: Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 12:51 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, У меня вроде бы все нормально с psql, сообщения на \list и select1; выдаются корректно В инсталляторе создается ярлык для запуска psql, для которого настраивается шрифт для консоли Lucida и запуск с командой chcp 1251. В сборке от EDB это не помогало. Помнится команда chcp 65001 у меня вообще не работала корректно. Проверил pg_dump.exe --format custom --blobs --encoding UTF8 --verbose --file "c:/temp/test2.backup" "VvsTest1" - выдает сообщения корректно и без chcp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 13:03 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Victor SpirinПомнится команда chcp 65001 у меня вообще не работала корректно. Вот именно об этом и речь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 13:06 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Да, pg_restore.exe --dbname "alex1" --no-password --verbose "c:/temp/test2.backup" местами пишет кракозябры. А где Вы правите работу с UTF в своей сборке - в ядре postgres или в библиотеках, вроде gettext ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 13:18 |
|
||
|
Кодировка русских букв.
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, Кстати, раз Вы готовите обновление Windows сборки, то сообщаю, что столкнулся с ситуацией когда наши инсталляторы не устанавливают postgres под Windows 10 Home. Возникает проблема с установкой прав доступа на папку с данными, в домашней редакции Win10 скрипт не дает нужных прав и база данных не инициализируется. В итоге, я давал права вручную и повторно устанавливал. (Диме Васильеву я сразу сообщил как заметил.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2016, 19:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=1997115]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 476ms |

| 0 / 0 |
