Имя: Пароль:
1C
 
Ошибка запроса Postgres
0 cw014
 
05.02.22
14:16
Люди, добрый день. Нужна помощь по прямому запросу к PostgreSQL. А именно, подключаюсь по connstr = "Driver={PostgreSQL Unicode};Server=localhost;Port=5433;Database=mydb;Uid=***;Pwd=***;"

Подключается, делаею запрос "select * from _reference31" - запрос выполняется, но в поле "_code" почему то нормальные только первые 7 символов из 11, остальное - непечатаемые символы - примерно так (нечитаемые символы заменил на /x##): "0000000/x00/x08/x00/x00"
При этом _description отображается корректно. В самой 1С тоже все корректно показывает.

Никто не сталкивался? Куда можно копнуть?
1 nicxxx
 
05.02.22
17:04
кириллица же.
локально postgres наверное ANSI? а надо UTF8
2 nicxxx
 
05.02.22
17:04
"локально" = локаль (locale)
3 ansh15
 
05.02.22
17:20
STMT=utf8 еще указывают в конце строки подключения.
4 ДедМорроз
 
05.02.22
18:22
Вполне себе читаемые символы,тем более,что 1С в технологический журнал точно также пишет.
5 cw014
 
05.02.22
18:44
(1) _Description показывает нормально в кириллице. Часть _Code тоже = первые 7 символов. Код чисто числовой (никаких префиксов нет). Локаль точно UTF8 - изначально это проверил. Есть подозрение, что при запросе из x86 клиента на x64 сервер что то с распределением памяти не так
(4) Я так написал, потому что не могу написать "нечитаемые XML символы" в сообщении. Попробуй все что экранировано /x__ с нажатым ALT выполнить
6 cw014
 
05.02.22
18:55
https://ibb.co/yYXnq4z - так возвращает ADODB
https://ibb.co/1JYfXp0 - так видно в 1С
7 acht
 
05.02.22
19:46
(6) Там ЕМНИП, используются типы MCHAR и MVARCHAR, которые добавляются патчами 1С для совместимостие логики обработки строк с MSSQL. Твой ADO ничего про них не знает и отдает тебе данные как умеет.
8 pechkin
 
05.02.22
20:59
(7) так адо и не должен знать ничего о внутренних типах
9 pechkin
 
05.02.22
21:01
Попробуй какой постгре экплорер
10 cw014
 
05.02.22
21:53
(9) https://ibb.co/W5GNgWt - pgadmin нормально выборку делает
11 acht
 
05.02.22
22:08
(10) Ну и выбери ты их как каст в нативный постгревый варчар
12 cw014
 
07.02.22
10:21
(11) Помогает, спасибо. Но вот только тогда я лишаюсь старого доброго "Выбрать всё из всего", а именно SELECT * FROM _reference31
13 acht
 
07.02.22
10:30
(12) Оно конечно старое, но недоброе. Явный перечень полей всегда лучше.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший