powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / xml на Windows-сервере
4 сообщений из 4, страница 1 из 1
xml на Windows-сервере
    #39384067
Фотография RUS 21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Postgres 9.5.2 на винде
С https://www.postgresql.org/docs/9.6/static/datatype-xml.html вроде ознакомился. Про возможные проблемы предупреждают 1)при кодировке БД!=UTF8 и 2) при конвертациях, при различных кодировках в сессии, БД и xml-документе.
Тут имеем попытку указать кодировку xml-документа отличную от кодировки сессии и БД. Максимум на что можно было попасть это "крякозябры" в кириллице (хотя вставляем мы кириллицу в окно сеанса в читаемом виде и в таком же читаемом виде она должна прийти в базу). Но даже если её(кириллицу из документа) убрать, все равно не работает. Помогает лишь указание кодировки документа utf8(либо пропуск этого атрибута).
Как заставить работать xpath_table с windows-1251 документом на windows-сервере?



Код: sql
1.
select name,setting from pg_settings where name like '%encod%' or name like '%lc%' order by 2;


lc_timeRussian_Russia.1251lc_collateRussian_Russia.1251lc_ctypeRussian_Russia.1251lc_messagesRussian_Russia.1251lc_monetaryRussian_Russia.1251lc_numericRussian_Russia.1251client_encodingUNICODEserver_encodingUTF8

1. encoding="windows-1251"
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create extension if not exists xml2;
drop table if exists tmp_xml;
create temporary table tmp_xml(id serial, xml text);
insert into tmp_xml (xml) select '<?xml version="1.0" encoding="windows-1251"?>
<library>
  <format dep="Департамент-depart" name="Имя-name">
  </format>
</library>
';

select t.*
from xpath_table('id', 'xml', 'tmp_xml', '/library/format/@dep|/library/format/@name', 'true')
as t (id integer, dep varchar(50), name varchar(50));


1<NULL><NULL>

2. encoding="utf8" или пропустить этот атрибут
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create extension if not exists xml2;
drop table if exists tmp_xml;
create temporary table tmp_xml(id serial, xml text);
insert into tmp_xml (xml) select '<?xml version="1.0" encoding="utf8"?>
<library>
  <format dep="Департамент-depart" name="Имя-name">
  </format>
</library>
';

select t.*
from xpath_table('id', 'xml', 'tmp_xml', '/library/format/@dep|/library/format/@name', 'true')
as t (id integer, dep varchar(50), name varchar(50));


1Департамент-departИмя-name
...
Рейтинг: 0 / 0
xml на Windows-сервере
    #39388340
Фотография RUS 21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Postgres на Windows-зло! Но все же..
...
Рейтинг: 0 / 0
xml на Windows-сервере
    #39388368
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RUS 21Postgres на Windows-зло! Но все же..

и в чем проявляется это "зло"?
...
Рейтинг: 0 / 0
xml на Windows-сервере
    #39389341
Фотография RUS 21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

оффтоп.

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


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