Нашёл удовлетворительное решение проблемы
AlexanderM 31.03.2010 11:38
Как я уже писал, кодировка базы данных UTF-8, кодировка страниц - тоже, а вот кодировка скриптов - WIN-1251 (то есть $request:charset[windows-1251]).
Если поставить $request:charset[utf-8], то всё начинает работать.
При этом не важно, будет $response:charset[windows-1251] или $response:charset[utf-8].
То есть, проблему можно, наверное, сформулировать так: не корректно работает перекодировка текста из windows-1251 в utf-8 при передаче «грязных» данных в PgSQL.
Поскольку «чистые» данные перекодируются нормально, то наверное проблема действительно в PQescapeStringConn.
На счёт распространённости проблемы.
Я проверял в версиях PgSQL 8.3.1 и 8.3.10 - проблема есть. Может быть Vint (или кто-нибудь другой) проверит с учётом новых деталей в версии 8.4.2 - может быть там действительно всё работает.
Как много людей использует PgSQL с utf-8 и скрипты win-кодировке? Может быть имеет смысл где-то в документации написать, что не следует использовать win-кодировку при работе с PgSQL?
Для себя я решил, что просто перейду на utf-8. Это не сложно и даже не очень трудоёмко.
Спасибо за помощь.