Rolf B: Langen Srting in Datenbank schreiben ->Fatal error: Uncaught PDOException: SQLSTATE[22007]

Beitrag lesen

Hallo Bernd,

utf8_general_ci

utf8 ist ein Alias für utf8mb3 und seit MySQL 8 missbilligt. Man soll utf8mb4 verwenden. Leider haben sie es nicht gewagt, utf8 einfach intern auf utf8mb4 zu mappen. Das hätte vermutlich Kompatibilitätsprobleme gemacht.

Problem bei utf8/utf8mb3 ist, dass sie nur die Basic Multilingual Plane (Plane 0) von Unicode unterstützen, also Codepoints unter \x10000. Dein Codepoint ist in Plane 1 und deswegen weist der Server das ab. Man sieht das auch in der Fehlermeldung - da werden 4 Bytes angemeckert, und die sind die UTF-8 Darstellung deines Zeichens \u1f465

Das Wissen darum scheint nicht so verbreitet zu sein.

Ein Character Set und eine Collation sind ein Attribut der Datenbank. Beginne dort (sofern Du das darfst) und ändere das CHARACTER SET auf utf8mb4 und die Collation auf utf8mb4_general_ci.

Danach schau Dir die Tables an. Ich glaub's zwar nicht, aber vielleicht haben sie die DB-Einstellungen als Default gehabt und wurden automatisch angepasst. Wenn nicht, ändere auch CHARACTER SET und COLLATION der Tables.

Danach dann die Spalten. Wo nötig, ändere CHARACTER SET und COLLATION in allen Textspalten.

Rolf

--
sumpsi - posui - obstruxi