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