Pgjdbc autodetected server encoding to be windows 1251

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Разработка собственного фреймворка для тестирования в C#

UnmanagedCoder 04.05.2025

C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .

Распределенная трассировка в Java с помощью OpenTelemetry

Javaican 04.05.2025

Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .

Шаблоны обнаружения сервисов в Kubernetes

Mr. Docker 04.05.2025

Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .

Создаем SPA на C# и Blazor

stackOverflow 04.05.2025

Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .

Реализация шаблонов проектирования GoF на C++

NullReferenced 04.05.2025

«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .

C# и сети: Сокеты, gRPC и SignalR

UnmanagedCoder 04.05.2025

Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .

Создание микросервисов с Domain-Driven Design

ArchitectMsa 04.05.2025

Архитектура микросервисов за последние годы превратилась в мощный архитектурный подход, который позволяет разрабатывать гибкие, масштабируемые и устойчивые системы. А если добавить сюда ещё и. . .

Многопоточность в C++: Современные техники C++26

bytestream 04.05.2025

C++ долго жил по принципу «один поток — одна задача» — как старательный солдатик, выполняющий команды одну за другой. В то время, когда процессоры уже обзавелись несколькими ядрами, этот подход стал. . .

развернутом в докере, при попытки установления подключения падает ошибка: пользователь «UserName» не прошёл проверку подлинности (по паролю) (pgjdbc: autodetected server-encoding to be windows-1251, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf), сам контейнер поднялся, у друга все работает корректно, в чем может быть проблема?


12

ответов

например, в неверном пароле

Конфиги не менялись и пароль указывается тот же что и прописан в контейнере

Данил Кринж


Конфиги не менялись и пароль указывается тот же чт…

ну это энвы контейнера, не факт что они применились к базе

Виталий


ну это энвы контейнера, не факт что они применилис…

а они могли не примениться, если задан POSTGRES_PASSWORD?

Jan


а они могли не примениться, если задан POSTGRES_PA…

например, если база уже была и при запуске образа с новыми энвами, к базе ничего не применится

Виталий


например, если база уже была и при запуске образа …

screenshot

сделали
docker-compose stop
docker-compose rm -v
docker volume prune
docker-compose pull
docker-compose up -d

БД очистилась, при этом @DaKush все еще не может подключиться к БД, а я могу

А может быть такое, что запросы из подсети пользователя, просто на контейнере блокируются?(из разряда allowed:172.0.0.1/32(сначала включил все подсети 8ой-что крайне глупо), или что-то подобное?
Просто судя по проблеме, я бы копал в этом направлении.
Ну из разряда бана всех ip в локальной подсети, кроме гейта? Если вы на 100% уверены в правильности пароля, и в том, что кодировка корректная

Lislas Оказиcлав


А может быть такое, что запросы из подсети пользов…

Никаких таких правил для контейнера нет, в postgresql.conf listen_addresses = ‘*’
pg_hba.conf мы не прокидываем, там стандартный выставляется

Jan


screenshot

сделали
docker-compose stop
docker-compose rm -v

значит у вас база была в волюме и вы его дропнули, и занового создали — это уже хорошо. Случайно не стоит ещё какой-то постргрес куда и пытается подключится DBeaver?

а даже хз, просто недавно у знакомого поднялся контейнер с постгрёй на 5432, и даже не ругнулся, что порт был занят другим контейнером (винда докер десктоп) 😑

Виталий


а даже хз, просто недавно у знакомого поднялся кон…

У меня не ругался, но да был занят, получил процессы по порту и убил их, это помогло, спасибо

Проблема с кодировкой Windows-1251 в командной строке PSQL (терминальный клиент для работы с СУБД PostgreSQL) остаточно распространенное явление, и решить эту проблему можно несколькими способами.

1 способ: установка кодировки Windows-1251 в PSQL

Открываем утилиту PSQL. Сначала вводим данные для авторизации, а затем команду \l, чтобы вывести список всех баз данных. И как мы видим, есть проблема с отображением символов в командной строке.

Проблема с кодировкой Windows-1251 в PSQL

Чтобы установить кодировку Windows-1251 для текущего сеанса в окне терминала PSQL необходимо ввести следующую команду — \! chcp 1251, и подтвердить её нажатием клавиши Enter.

Устанавливаем кодировку Windows-1251 в PSQL

Снова выполняем команду \l, и видим, что проблема с кодировкой решена. Недостаток этого способа заключается в том, что придётся вводить эту команду каждый раз при открытии нового окна терминала PSQL.

Проблема с кодировкой Windows-1251 в PSQL решена

2 способ: установка кодировки в файле runpsql.bat

Находим ярлык SQL Shell (psql) в меню — Пуск, нажимаем правой кнопкой мыши и переходим к расположению файла. Либо сразу открываем директорию, в которую установлен PostgreSQL и переходим в каталог — scripts.

Находим ярлык PSQL в меню Пуск

Сейчас необходимо открыть файл runpsql.bat в текстовом редакторе для последующего редактирования. Данное действие нужно выполнить от имени администратора.

Открываем файл runpsql.bat в текстовом редакторе

Сразу после команды @echo off добавляем команду chcp 1251 она будет устанавливать кодировку Windows-1251 для каждого открытого окна PSQL. Сохраняем внесенные изменения.

Устанавливаем кодировку chcp 1251 в файле runpsql.bat

Открываем окно терминала PSQL и сразу видим, что для окна уже установлена кодировка Windows-1251.

Кодировка Windows-1251 установлена в PSQL

Метки: PostgreSQL, PSQL.

Проблема проявляется только, если запускать проект в linux(ubutu, netbeans, если это важно).
База firebird запущена в windows, если проект запущен так же в windows, то данные из базы отображаются «корректно», если в linux, то — «кракозябрами».

В настройках jdbc «везде» стоит utf8(изменение настроек на win1251 не влияют на результат), данные в базе win1251.
Если приложение в netbeans(с теми же настройками) запущено в windows всё корректно.

Условие:
Изменить кодировку в базе нельзя.


  • Вопрос задан

  • 9018 просмотров

jdbc.databaseurl=jdbc:firebirdsql:127.0.0.1/0000:D:/base/base.fdb?encoding=utf8&useUnicode=true&characterEncoding=utf8

127.0.0.1 - ip сервера
0000 - порт
D:/base/base.fdb - путь до базы(сервер на windows)

encoding=utf8

Так вот я испробовал много различных вариантов указания кодировки и не только в данном конфиге, и случайно наткнулся на параметр encoding, и вот именно он сработал установив его значением utf8.
Самое интересное что это решение работает при запуске проекта под linux(ubuntu), но при этом если проект запустить с этим параметром на windows, то там начинает проявляться именно та проблема с кодировкой которую я и пытался побороть и следовательно параметры после «пути до базы» приходится там удалять, а под linux ставить обратно.

Пригласить эксперта

Актуально ещё или нет..
Для нормального отображения данных из Firebird я использую Properties для параметров подключения

String conString = "jdbc:firebirdsql:192.168.0.5:bsklad";
...
paramConnection = new Properties();
paramConnection.setProperty("user", "beginner");
paramConnection.setProperty("password", "mayby");
paramConnection.setProperty("encoding", "WIN1251");
...
Class.forName("org.firebirdsql.jdbc.FBDriver");
connection = DriverManager.getConnection(conString, paramConnection);

Где крутится база не имеет значения! Имеет значение кодировка самой базы.

Я бы посмотрел в настройки Locale при запуске на Windows и на Linux.

Конвертить при получении.


  • Показать ещё
    Загружается…

Минуточку внимания

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество

В статье пойдёт речь о том, как добиться корректного вывода кириллицы в «консоли» Windows (cmd.exe).

Описание проблемы

В дистрибутив PostgreSQL, помимо всего прочего, для работы с СУБД входит:

  • приложение с графическим интерфейсом pgAdmin;
  • консольная утилита psql.

При работе с psql в среде Windows пользователи всегда довольно часто сталкиваются с проблемой вывода кириллицы. Например, при отображении результатов запроса к таблице, в полях которых хранятся строковые данные на русском языке.

Ну и зачем тогда работать с psql, кому нужно долбить клавиатурой в консольке, когда можно всё сделать красиво и быстро в pgAdmin? Ну, не всегда pgAdmin доступен, особенно если речь идёт об удалённой машине. Кроме того, выполнение SQL-запросов в текстовом режиме консоли — это +10 к хакирству.

Решение проблемы

Версии ПО:

  • MS Windows 7 SP1 x64;
  • PostgreSQL 8.4.12 x32.

На сервере имеется БД, созданная в кодировке UTF8.

Суть

Суть проблемы в том, что cmd.exe работает (и так будет до скончания времён) в кодировке CP866, а сама Windows — в WIN1251, о чём psql предупреждает при начале работы:

WARNING: Console code page (866) differs from Windows code page (1251)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.

Значит, надо как-то добиться, чтобы кодировка была одна.

В разных источниках встречаются разные рецепты, включая правку реестра и подмену файлов в системных папках Windows. Ничего этого делать не нужно, достаточно всего трёх шагов:

  1. сменить шрифт у cmd.exe;
  2. сменить текущую кодовую страницу cmd.exe;
  3. сменить кодировку на стороне клиента в psql.

Конкретные действия

Супер быстро и просто

Запускаете cmd.exe, оттуда psql:

psql -d ВАШАБАЗА -U ВАШЛОГИН

Далее:

psql \! chcp 1251

Быстро и просто

Запускаете cmd.exe, оттуда psql:

psql -d ВАШАБАЗА -U ВАШЛОГИН

Вводите пароль (если установлен) и выполняете команду:

set client_encoding='WIN866';

И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:

Потому предлагаем ещё способ, который этого недостатка лишён.

Посложнее и подольше

Запустить cmd.exe, нажать мышью в правом левом верхнем углу окна, там Свойства — Шрифт — выбрать Lucida Console. Нажать ОК.

Выполнить команду:

chcp 1251

В ответ выведет:

Текущая кодовая страница: 1251

Запустить psql;

psql -d ВАШАБАЗА -U ВАШЛОГИН

Кстати, обратите внимание — теперь предупреждения о несовпадении кодировок нет.

Выполнить:

set client_encoding='win1251';

Он выведет:

SET

Всё, теперь кириллица будет нормально отображаться.

Проверяем:

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Запуск режима восстановления windows 10 при загрузке
  • Рабочий стол windows old
  • Как оптимизировать озу windows 10
  • Windows linux boot menu
  • Проблемы с обновлением для windows 10