Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38242134&tid=1997115]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 173ms |

| 0 / 0 |
