Hi,
DBD::ODBC has several tests related to Unicode handling
(40UnicodeRoundTrip.t, 41Unicode.t, 45_unicode_varchar.t), they should
also work with other DBDs. They should tell you if your problem is
between Perl and Postgres or if it is simply in the encoding of your
terminal.
Alexander
On 17.12.2024 13:31, Felipe Gasper via dbi-users wrote:
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
https://www.cogsci.ed.ac.uk/~richard/utf-8.cgi?input=%E2%80%9C&mode=char
<https://www.cogsci.ed.ac.uk/~richard/utf-8.cgi?input=%E2%80%9C&mode=char>
below is the file testutf.pl <http://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 <http://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 <http://testutf.pl> which wrote “ to database on
RHEL8
text.tac1.dev.bia-boeing.com <http://text.tac1.dev.bia-boeing.com>>
./testutf.pl <http://testutf.pl>
DBI version: 1.641
#from psql
debugutf=# select * from table1;
title
---------------
â\u0080\u009C =========>unexpected
(1 row)
==============on RHEL7
#execute testutf.pl <http://testutf.pl> which wrote “ to database on
RHEL8
text.tac1.dev.bia-boeing.com <http://text.tac1.dev.bia-boeing.com>>
./testutf.pl <http://testutf.pl>
DBI version: 1.627
#from psql
debugutf=# select * from table1;
title
---------------
“ ============>expected
(1 row)
Any feedback is appreciated.
thank you
Shirley
--
Alexander Foken
mailto:alexan...@foken.de