Antwort an „MudGuard“ verfassen

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

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen