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

rosti
 2023-06-08 07:59
#194974 #194974
User since
2011-03-19
3492 Artikel
BenutzerIn
[Homepage]
user image
Noch etwas zum Hintergrund: In dem Moment wenn für das Datenfeld eine utf8 Collation eingestellt ist

Code: (dl )
1
2
3
4
CREATE TABLE `chr` (
`c` text CHARACTER SET utf8 COLLATE utf8_bin,
`d` varchar(123) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8


Liefert ein Abfrage mit Perl kodierte Zeichenketten. Das €-Zeichen belegt 7 Bytes in der Tabelle und Data::Dumper zeigt den Codepoint "\x{20ac}", length 7 . Vor einer Ausgabe mit print ist die Codierung mit Encode::endode_utf8 auszuschalten.

Ein mit PHP eingefügtes €-Zeichen belegt 3 Bytes in der Tabelle und PHP.PDO gibt die richtigen Bytes aus. Wird jedoch das mit PHP eingefügte €-Zeichen mit Perl::DBI ausgegeben, wandelt Perl dieses Zeichen spontan in ein chr(128) um.

Und genau das ist das Problem: Wenn ich mit Perl in meine Log-Tabelle schaue ist immer Eines von Beiden falsch dargestellt.

View full thread [PHP] PDO und utf8