Thread [PHP] PDO und utf8 (49 answers)
Opened by rosti at 2023-06-06 13:34

rosti
 2023-06-11 08:56
#194989 #194989
User since
2011-03-19
3274 Artikel
BenutzerIn
[Homepage]
user image
Moin ;)

Das ganze Problem liegt weder an Perl noch an PHP sondern an MySQL. Denn MySQL nutzt in Feldern mit utf8-Collation eine interne (proprietäre) Kodierung! Bspw. wird ein 'ä mit der Bytefolge C383C2A4 gespeichert anstelle C3A4.

Und wenn sich nach einem INSERT mit PHP/PDO das 'ä' mit der Originalbytefolge C3A4 in der Tabelle wiederfindet liegt das daran daß PHP/PDO implizit ein set names utf8 anweist. Ein Insert mit Perl::DBI

Code (perl): (dl )
1
2
$dbh->do("set names utf8");
my $id = $self->insert($dbh, 'chr', c => 'ä');


bewirkt genau dasselbe!

Schönen Sonntag, jetzt gehmer frühstücken ;)

Das Statement set names utf8 collate utf8_general_ci setzt die Variablen character_set_client, character_set_connection, und character_set_results
Code: (dl )
1
2
3
4
5
6
7
8
mysql> show variables like "character_set%";
+--------------------------+---------------+
| Variable_name | Value |
+--------------------------+---------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_results | utf8 |
+--------------------------+---------------+

Last edited: 2023-06-11 17:03:53 +0200 (CEST)

View full thread [PHP] PDO und utf8