Respectfully to Dan & others, I don’t advocate adding “use utf8” to existing code without a clear understanding of where your program’s decode & encode points are.

Check to see what DBD::Pg actually writes to the database. If it suddenly started encoding, that’s a breaking change that either was documented or should be reported upstream.

On Dec 16, 2024, at 17:13, Shaomei Liu <sliu.newjer...@gmail.com> wrote:


Hello,
very happy to find this mailing list as it is my last resort!!
I have a project which uses DBI to write to postgres DB.
after upgrading from RHEL7 to RHEL8, the utf-8 character is not displayed properly in the DB. DB has correct utf-8 encoding set.
for example, left double quotation mark   “  is displayed as â\u0080\u009C.
You can use this link to check hex utf-8 bytes

below is the file testutf.pl which writes left double quotation mark  “ to the database. it also shows the query results from psql for both EL8 and EL7.

==========file testutf.pl==========
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
print "DBI version: $DBI::VERSION\n";

my $db = "debugutf";
my $host = "db";
my $user = "postgres";
my $pass = "";
my $dbh = DBI->connect("DBI:Pg:dbname=$db;host=$host",$user,$pass);
my $sql = 'INSERT INTO table1 (title) VALUES (?)';
my $query = $dbh->prepare($sql);
my @values = ('“');
$query->execute(@values);
===================================

==============on RHEL8
#execute testutf.pl which wrote “ to database on RHEL8
text.tac1.dev.bia-boeing.com> ./testutf.pl
DBI version: 1.641

#from psql
debugutf=# select * from table1;
     title
---------------
 â\u0080\u009C  =========>unexpected
(1 row)


==============on RHEL7
#execute testutf.pl which wrote “ to database on RHEL8
text.tac1.dev.bia-boeing.com> ./testutf.pl
DBI version: 1.627

#from psql
debugutf=# select * from table1;
     title
---------------
 “       ============>expected
(1 row)

Any feedback is appreciated.
thank you
Shirley

Reply via email to