RT# 79705 Correct UTF-8 output for generated E-Mail
authorMitch Jackson <mitch@freeside.biz>
Sat, 29 Sep 2018 22:48:39 +0000 (18:48 -0400)
committerMitch Jackson <mitch@freeside.biz>
Sat, 29 Sep 2018 22:49:53 +0000 (18:49 -0400)
FS/FS/Record.pm

index 5048e44..89957cb 100644 (file)
@@ -3434,7 +3434,19 @@ sub _quote {
            && driver_name eq 'Pg'
           )
   {
-    dbh->quote($value, { pg_type => PG_BYTEA() });
+    local $@;
+
+    eval { $value = dbh->quote($value, { pg_type => PG_BYTEA() }); };
+
+    if ( $@ && $@ =~ /Wide character/i ) {
+      warn 'Correcting malformed UTF-8 string for binary quote()'
+        if $DEBUG;
+      utf8::decode($value);
+      utf8::encode($value);
+      $value = dbh->quote($value, { pg_type => PG_BYTEA() });
+    }
+
+    $value;
   } else {
     dbh->quote($value);
   }