Thank you, Christoph!
perl -MDBD::Pg -e'print $DBD::Pg::VERSION'
EL8 3.7.4
EL7 2.19.3

On Thu, Dec 19, 2024 at 2:13 PM Christoph Lamprecht <
[email protected]> wrote:

> What does the following print:
>
> perl -MDBD::Pg -e'print $DBD::Pg::VERSION'
>
>
> Am 19.12.24 um 17:05 schrieb Shaomei Liu:
> > thank you, Warstone!
> > EL8 pg_lib_version 120001 pg_enable_utf8:1
> > EL7 pg_lib_version: 90224  pg_enable_utf8:1
> > not sure if that is the version you asked though.
> > Shirley
> >
> > On Wed, Dec 18, 2024 at 10:32 PM [email protected]
> > <mailto:[email protected]> <[email protected] <mailto:[email protected]>>
> > wrote:
> >
> >     Can you provide DBD::Pg versions for your EL7 and EL8 distros? And
> >     check this flag:
> >     https://metacpan.org/pod/DBD::Pg#pg_enable_utf8-(integer)
> >     <https://metacpan.org/pod/DBD::Pg#pg_enable_utf8-(integer)>
> >
> >         Четверг, 19 декабря 2024, 0:34 +03:00 от Shaomei Liu
> >         <[email protected] <mailto:[email protected]>>:
> >         send again after subscribing.
> >         On Wed, Dec 18, 2024 at 11:20AM Shaomei Liu
> >         <[email protected]
> >         <//e.mail.ru/compose/?mailto=mailto%[email protected]>>
> >         wrote:
> >
> >             Hello,
> >             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.
> >             with support from DBI community, the issue was solved by
> >             calling decode from Encode module before writing to DB.
> >             wondering what is the change from DBD::pg cause this issue.
> >             perl version is 5.26.3 and 5.16.3 on EL8 and EL7
> respectively.
> >             DBI version is 1.641 and 1.627 on EL8 and EL7 respectively.
> >             here is the program and execution results.
> >             Any feedback are greatly appreciated!
> >             thank you
> >             Shirley
> >             xxx.com> cat testutf_decode.pl
> >             #!/usr/bin/perl
> >             use strict;
> >             use warnings;
> >             use DBI;
> >             use Encode 'decode';
> >             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 $bytes = '“';
> >             my $chars = decode('UTF-8', $bytes);
> >             print "$bytes contains ".length($bytes)." characters\n";
> >             print "after decode $bytes contains ".length($chars)."
> >             characters\n";
> >             #my @values = ($bytes); #=======>without decode, Database
> >             shows “ on EL7 but â\u0080\u009C on EL8
> >             my @values = ($chars);  #======>with decode, Database shows
> >             “ on both EL8 and EL7, decode fixed the issue
> >             $query->execute(@values);
> >             ############### running on EL8
> >             xxx.com> ./testutf_decode.pl
> >             DBI version: 1.641
> >             “ contains 3 characters
> >             after decode “ contains 1 characters
> >             [yyy.com]$ psql -Upostgres -hdb debugutf
> >             psql (16.6)
> >             debugutf=# select * from table1;
> >             title
> >             ---------------
> >               â\u0080\u009C ==========>NOK without decode
> >               “ =============>OK with decode, so decode fixed the issue
> >             (2 rows)
> >             ############### running on EL7
> >             xxx.com> ./testutf_decode.pl
> >             DBI version: 1.627
> >             “ contains 3 characters
> >             after decode “ contains 1 characters
> >             [yyy.com]$ psql -Upostgres -hdb debugutf
> >             psql (16.6)
> >             debugutf=# select * from table1;
> >             title
> >             ---------------
> >               “ =============>OK without decode
> >               “ =============>OK with decode
> >             (2 rows)
> >
>

Reply via email to