В какой тип столбца вы сохраняете свои данные? Если вложение может быть любого типа, вам необходим столбец bytea , чтобы данные просто передавались в виде большого двоичного объекта (двоичного «большого» объекта). Как упоминалось в других ответах, эта ошибка указывает на то, что некоторые данные, отправленные в PostgreSQL, которые были помечены как текстовые в кодировке UTF-8, были неверными.
Я бы рекомендовал хранить вложения в виде двоичных файлов вместе с заголовком MIME-типа. Заголовок Content-Type должен включать кодировку символов, необходимую для преобразования двоичного содержимого в текст для вложений, где это имеет смысл: например, "text / plain; charset = iso-8859-1".
Если вы хотите, чтобы декодированный текст был доступен в базе данных, вы можете сделать так, чтобы приложение расшифровывало его и сохраняло текстовое содержимое, возможно, имея дополнительный столбец для декодированной версии. Это полезно, например, если вы хотите использовать полнотекстовую индексацию PostgreSQL для вложений электронной почты. Однако, если вы просто хотите сохранить их в базе данных для последующего извлечения как есть, просто сохраните их как двоичные файлы и не беспокойтесь о кодировке текста для приложения.