Здравствуйте, такая проблема...
Имеется строка в 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