Thread Automatisches decodieren von utf-8 aus mysql Datenbank (39 answers)
Opened by mcfaq at 2011-08-01 17:55

pq
 2011-08-03 12:02
#151028 #151028
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hochaktuell also, ja?

ich hab es doch erklärt, es ist ganz simpel:
ein ü steht als \303\274 in der datenbank.
Code (perl): (dl )
1
2
3
4
5
6
7
use Devel::Peek;
my $dbh = DBI->connect($dsn, ..., { mysql_enable_utf8 => 0 });
my $sth = $dbh->prepare("SELECT a from utf8test");
$sth->execute;
my ($test) = $sth->fetchrow_array;
say length $test;
Dump $test;


Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
1
SV = PV(0x8616a68) at 0x8449d40
REFCNT = 1
FLAGS = (PADMY,POK,pPOK)
PV = 0x85d8410 "\374"\0
CUR = 1
LEN = 4


Dasselbe mit:
my $dbh = DBI->connect($dsn, ..., { mysql_enable_utf8 => 1 });

Ausgabe:
1
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
SV = PVMG(0x8f11cc4) at 0x8daed58
REFCNT = 1
FLAGS = (PADMY,SMG,POK,pPOK,UTF8)
IV = 0
NV = 0
PV = 0x8da9038 "\303\274"\0 [UTF8 "\x{fc}"]
CUR = 2
LEN = 4
MAGIC = 0x8da8bf8
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 1


mysql_enable_utf8 dekodiert also automatisch die werte aus der datenbank. was dekodieren heisst, dürftest du ja jetzt gelernt haben.

aber vermutlich stellt dich das auch nicht zufrieden, weil es von mir kommt.
Last edited: 2011-08-03 12:05:23 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Automatisches decodieren von utf-8 aus mysql Datenbank