diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 1b21329b8dde6e275468ea8a0d705d4acc80b409..030b7c3dc7f6b3acdbc12ed0cbfc2c065b6fef1c 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -794,8 +794,8 @@ final int _decodemsg(void|state waitforstate)
 		case BPCHAROID:
 		case VARCHAROID:
 		  value=_c.getstring(collen);
-		  if(cenc==UTF8CHARSET)
-		    value=utf8_to_string(value);
+		  if(cenc==UTF8CHARSET && catch(value=utf8_to_string(value)))
+		    ERROR("%O contains non-%s characters\n",value,UTF8CHARSET);
 		  break;
 		case CHAROID:value=atext?_c.getstring(1):_c.getbyte();
 		  break;