MudGuard: UTF-8-Probleme

Beitrag lesen

Hi,

meine Transportmittel-Zeichen (siehe anderer Thread) machen mir noch Probleme.

Anzeige im Java-Client paßt. Übertragung ans Server-PHP paßt auch (wenn ich den Wert in $_POST direkt per echo ausgebe, sehe ich im Java-Client immer noch meine Lokomotive usw.

Das Url-Encodieren im Client und Decodieren im PHP scheint also zu funktionieren.

Schreibe ich den Wert in die Datenbank, landen dort statt der Lokomotive vier Fragezeichen, wobei Umlaute und scharfes s korrekt in der Datenbank landen (auch meine Pfeilchen \u2192). So sieht's zumindest im PHP-Myadmin aus.

Hole ich den Wert per PHP wieder aus der DB und zeige ihn im Java-Client an, sind's immer noch 4 Fragezeichen.

Daraus schließe ich mal, daß das kein Anzeigefehler im PHP-Myadmin ist.

Sondern ein Problem beim Schreiben in die DB.

Setze ich den Wert im PHP-MyAdmin, kommt eine Warnung
#1366 Incorrect string value: '\xF0\x9F\x8F\xA0\xE2\x86...' for column dbs16104270.tabellenname.spaltenname at row 1

Und in die DB wird anstelle der 4 Fragezeichen nur 1 Fragezeichen geschrieben, der Rest des Strings ist korrekt incl. Umlauten.

Was habe ich falsch gemacht? Collation der DB, der Tabelle und der betroffenen Spalte ist utf8mb3_general_ci (das war so voreingestellt). Sollte doch also für UTF-8 passen …

Oder liegt's daran, daß die Zeichen "surrogates" sind?

Die DB ist eine MariaDB 11.8.

Muß ich sonst noch was beachten?

Danke im Voraus!

cu,
Andreas a/k/a MudGuard

akzeptierte Antworten