utf8 and mysql

Gabor Szabo <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <CABe4FJAsrwX511aVafGb+n4iu+51c-DPA3XQdBSkjkdn9W-=Uw@mail.gmail.com>
Hi,

I am quite lost at this utf8 issue:
I have a file that I opened with

open(my $KEYWORDS, "<:encoding(UTF-8)", $keywords_file)
as I read the rows I can print them to a log file
(that was opened using
open(my $fh, '>>:encoding(UTF-8)', $log_name)
and it looks ok.
I insert it into the 'text' field of a table that was created like this:

CREATE TABLE terms (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    text VARCHAR(255) NOT NULL,
    language_id INT NOT NULL,
    UNIQUE(text, language_id)
) ENGINE=MyISAM CHARSET=utf8;

Then I read it back using SELECT and when I try to print it to the log
file I get garbage there.

Calling decode('UTF-8', $t->{text}))  fixes the problem, but wonder if
I should not get the data back correctly?

I tried connecting to mysql with two different connections strings:

"DBI:mysql:database=$attr->{database};host=$attr->{host};mysql_enable_utf8=1",

"DBI:mysql:database=$attr->{database};host=$attr->{host}",

and I tried to call

$dbh->do('SET NAMES utf8');

immediately after the connection was established, but neither helped.

Using perl 5.18 on OSX with DBI 1.627 DBD::mysql 4.023
MySQL itself is 5.6.10

Oh and if I connect to the database using the mysql client,
it shows the text correctly.

your suggestions would be really appreciated

regards
    Gabor
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.