Кириллица и bytea

Всем доброго времени суток.

Возникла следующая ситуация:
Мне досталась база (в кодировке UTF8) у которой есть в одной из таблиц поле типа bytea, в котором хранятся xml-ки в кодировки UTF8 и сейчас возникла необходимость эти xml-ки перекодировать в win1251. Короче говоря, чтобы после извлечения кодировка у полученных файлов была win1251.
После долгих мучений застопорился на варианте при котором все прилично получается для текста на латинице как только встречается кириллица начинается коллапс (пробовал функцию convert) и выпадает ошибка несоответствия символов.

Пробовал в различных вариантах encode и decode.
получается типа такого:
select encode(decode('hellow - привет','escape'),'escape')
на выходе получаю:
hellow - \320\277\321\200\320\270\320\262\320\265\321\202

подскажите пожалуйста как можно разрешить мою проблему

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Вашу проблему на мой взгляд

Вашу проблему на мой взгляд не разрешить никак.
Поле bytea - это бинарные данные для которого никак не привязаны к кодировке, т.е. PostgreSQL полностью всё-равно какая у вас будет кодировка при хранении bytea, там только на символы экранирования это влияет.
Уместо было бы bytea сравнить с картинкой. Например вы сохранили в виде bytea файл gif, а теперь хотите на выводе получить его же в "другой" кодировке. Интересно как это у вас получится?

Самое смешное, что PostgreSQL давно имеет свой собственный тип данных для хранения XML - это раз. И в конце концов даже никто не мешал хранить XML в поле типа TEXT, зачем было замудряться с bytea - непонятно.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023