Перекодировка данных

Изображение Володя

Здравствуйте, такая проблема...
Имеется строка в utf8 и база в win1251 все вроде работает нормально но как только в исходной строке встречается символ не содержащийся в win1251 например " ¼" вылетает исключение

Пытаюсь перекодировать строку из UTF8 в WIN1251, использую
select convert('абвгд','win1251','UTF8');
Получаю результат в bytea
Затем через convert_from пытаюсь перекодировать эту строку win1251 и получаю:
фывфывфывфыв

Полная строка запроса имеет вид:
select convert_from(convert('фывфывфывфыв','win1251','UTF8'), 'win1251');

Заранее спасибо...

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

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

Поскольку диапазон UTF-8

Поскольку диапазон UTF-8 шире, чем cp1251 нет ничего удивительного, что когда вы пытаетесь записать в БД строку с символоами, которых нет в cp1251 у вас вылетает исключение.

Функция convert предназначена для bytea, во всяком случае так написано в мануале:
http://postgresql.ru.net/manual/functions-string.html

Тестовые строки перекодируются с помощью convert_to

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

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

Back to top

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