giapponesi e indonesiani

L’intempestivita’ è un problema serio. Dopo diversi mesi partecipo ad una riunione “sul sito”.

Ci troviamo a lavorare per il nuovo sito indonesiano e quello giapponese, e con un alfabeto non latino c’e’ poco da sorridere.
Perdo il pomeriggio a capire perchè i dati siano troncati, ed ecco che uno ha il mio stesso problema. Poi, magicamente, con use utf8 tutto si sistema.

I am trying to write utf-8 strings to a MySQL table using perl/DBI. For some reason the string is getting truncated at the first non-ascii character.

For example, if I set up the following table:

CREATE DATABASE testdb DEFAULT CHARSET=utf8;
CREATE TABLE testdb.testtable (textval CHAR(30)) DEFAULT CHARSET=utf8;

And then run the following perl code:

#!/usr/bin/perl
use strict;
use DBI;
my $dbh = DBI->connect('DBI:mysql:host=localhost;database=testdb', 'testuser', 'somepassword', {mysql_enable_utf8 => 1}) or die $DBI::errstr;
$dbh->do('SET NAMES utf8');
$dbh->do("INSERT INTO testtable (textval) VALUES ('the NxFCrburgring')");

It actually writes “the N”. (when it should be writing “the Nà¼rburgring”)

Looking in the MySQL query log, I see this:

271 Query INSERT INTO testtable (textval) VALUES ('the Nà¼rburgring')

So the string is reaching the DB server intact.

If I enter the same query directly in the MySQL console:

INSERT INTO testtable (textval) VALUES ('the Nà¼rburgring');

The entire string is written correctly. Any idea what I’m doing wrong?

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...