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

rosti
 2023-06-08 10:25
#194978 #194978
User since
2011-03-19
3276 Artikel
BenutzerIn
[Homepage]
user image
Du hast recht bianca, meine Fehlerbeschreibung war falsch (*). Aber hinterher ist man immer schlauer, man muß sich einfach mal richtig damit befassen.

*) PHP fügt nicht ein Byte ein sondern tatsächlich 2 bytes für ein 'ä' in Utf8. Nur ist es halt so daß Perl dieses 'ä' als utf8-kodiertes Zeichen liefert und da es nur 2 bytes anstelle von 4 bytes in der Tabelle vorfindet kodiert Perl dieses Zeichen um nach Latin also ein 'ä' mit einem Byte.

Also das ist jetzt eine korrekte Problembeschreibung.

Der Dump sieht so aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$VAR1 = [
          {
            'c' => '�',
            'd' => 'PHP',
            'length(c)' => '2'
          },
          {
            'c' => '�',
            'd' => 'PHP',
            'length(c)' => '2'
          },
          {
            'c' => "\x{20ac}",
            'd' => 'Perl',
            'length(c)' => '7'
          },
          {
            'c' => "\x{e4}",
            'd' => 'Perl',
            'length(c)' => '4'
          }
        ];



Tabelle:
Code: (dl )
1
2
3
4
5
6
CREATE TABLE `chr` (
`c` text CHARACTER SET utf8 COLLATE utf8_bin,
`d` varchar(123) NOT NULL DEFAULT 'Perl',
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

Last edited: 2023-06-08 10:52:40 +0200 (CEST)

View full thread [PHP] PDO und utf8