Конвертация кодировки на лету win-1251 --> UTF в XML-файле

Youra Polishuk
Дата: 23.05.2015 17:48:10
Добрый день.

У меня есть XML-файл в кодировке win-1251, который я загружаю в такую таблицу:
create sequence seq_xdoc;
create table xdoc
(
  id integer not null default nextval('seq_xdoc'::regclass),
  xmldoc xml,
  primary key (id)
);


XML-файл такой:
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<!-- информация о сотруднике -->
<employee>
  <fio>
    <first_name>Иванов</first_name>
    <last_name>Иван</last_name>
    <second_name>Иванович</second_name>
  </fio>
  <post>доцент</post>
  <work_address>
    <postal-code>000000</postal-code>
    <city>Город</city>
    <street>ул. Советская</street>
    <house_number>00</house_number>
    <email>xxx@xxx.xx.xx</email>
    <telephone code="0-0000">00-00-00</telephone>
  </work_address>
</employee>


Я вставляю его в поле таблицы через pgAdmin III. Использую postgresql-9.3.6-1-windows.

Мне нужно делать такие запросы:
select xpath('//first_name/text()',xmldoc) from xdoc;
select xpath('/employee/fio/first_name/text()',xmldoc) from xdoc;


У меня выдается ошибка:
ОШИБКА:  could not parse XML document
DETAIL: input conversion failed due to input error, bytes 0x98 0xD0 0xA1 0x3C
input conversion failed due to input error, bytes 0x98 0xD0 0xA1 0x3C
encoder error
line 9: Premature end of data in tag post line 9
<post>доцент кафедры РњРћР

Как я понял проблема в кодировке XML-документа (win-1251).
Как можно выполнить конвертацию непосредственно в запросе?
Чтобы не конвертировать XML-документ?

Заранее спасибо.
RUS 21
Дата: 25.05.2015 10:28:58
Youra Polishuk,

прямой ответ на ваш вопрос convert_from, convert_to. Но может дело не в этом?
А не подскажете что у вас дает
SELECT current_setting('client_encoding'),current_setting('server_encoding')